2012-06-02 30 views
10

如果客户端在http://socketplaceonnet.com的套接字侦听套接字例如,它如何知道有新的内容?我假设服务器无法直接向客户端发送数据,因为客户端可能在路由器后面,没有端口转发,因此无法实现直接连接。该cliet可能是一个手机,它改变了它的ip地址,所以我明白,客户端是一个监听器,服务器不需要知道clint的ip。如何侦听套接字的工作原理

谢谢

+1

简介[简介](http://ssfnet.org/Exchange/tcp/tcpTutorialNotes.html)(与TCP协议有关)。 – Vidul

+2

连接直接或不连接都不会改变。字节(数据包)到达您的计算机(它可能是网卡上的缓冲区),因此信号会发送到您的软件。 –

回答

46

客户端套接字不侦听传入连接,它启动到服务器的传出连接。服务器套接字侦听传入的连接。

服务器创建套接字,将套接字绑定到IP地址和端口号(用于TCP和UDP),然后侦听传入连接。当客户端连接到服务器时,会创建一个新的套接字与客户端通信(仅限TCP)。轮询机制用于确定是否在任何打开的套接字上发生任何活动。

客户端创建套接字并连接到远程IP地址和端口号(用于TCP和UDP)。可以使用轮询机制(select(),poll(),epoll()等)监视来自服务器的信息的套接字而不阻塞线程。

在客户端位于提供NAT(网络地址转换)的路由器后面的情况下,路由器会重新编写客户端的地址以匹配路由器的公共IP地址。当服务器响应时,路由器将其公有IP地址更改回客户端的IP地址。路由器会保留一个正在转换的活动连接表,以便它可以将服务器的响应映射到正确的客户端。

+1

+1优秀并且在少于14行的情况下得到了很好的解释:) –

+0

+1真的,它是非常好的,简短而甜美的通信过程中服务器轮询机制的解释。谢谢。 –