(这个问题的灵感来自于对这个线程的响应:How WebSocket server handlers multiplecoming connection requests?)
我的理解是这样的:
假设客户端IP = 1.1.1.1,服务器IP = 9.9.9.9
浏览器选择一个随机的本地可用端口,例如 5555,并启动到服务器端口 80 的连接。因此在客户端上, 应该socketfd_client代表一个 IP 连接,例如(1.1.1.1:5555, 9.9.9.9:80, TCP)。
服务器调用accept()其80端口并识别来自客户端的连接请求。然后服务器随机选择一个本地可用端口(例如 8888)来满足该连接请求。所以在服务器上,socketfd_server应该代表一个IP连接,如(1.1.1.1:5555, 9.9.9.9:8888, TCP).
我的问题是:
如果我的上述理解是正确的,socektfd_client并且socketfd_server有不同的服务器端口。客户端是80,服务器是8888,如何通信?我认为客户端也应该更改为使用服务器端口 8888,但是何时以及如何?
浏览器选择一个随机的本地可用端口,例如 5555
不。操作系统执行此操作:具体来说,是网络堆栈的 TCP 部分。
并启动到服务器端口 80 的连接。因此在客户端上,socketfd_client 应该表示一个 IP 连接,如 (1.1.1.1:5555, 9.9.9.9:80, TCP)。
正确的。
服务器在其端口80上调用accept()并识别来自客户端的连接请求。
正确的。
然后服务器随机选择一个本地可用端口,例如 8888
不。
以满足该连接请求。
不。
因此,在服务器上,socketfd_server 应该表示一个 IP 连接,如 (1.1.1.1:5555, 9.9.9.9:8888, TCP)。
否。两端的连接用 表示{1.1.1.1:5555, 9.9.9.9:80}。服务器端没有新的端口。
我的问题是:
如果我的上述理解是正确的
事实并非如此。
socektfd_client 和 socketfd_server 有不同的服务器端口。
不。
客户端是80,服务器是8888,如何通信?我认为客户端也应该更改为使用服务器端口 8888,但是何时以及如何?
绝不。
| 归档时间: |
|
| 查看次数: |
3039 次 |
| 最近记录: |