Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 监听套接字的工作原理_Sockets - Fatal编程技术网

Sockets 监听套接字的工作原理

Sockets 监听套接字的工作原理,sockets,Sockets,例如,如果客户端侦听套接字,它如何知道有新内容?我假设服务器无法直接向客户机发送数据,因为客户机可能位于路由器后面,没有端口转发,因此无法直接连接。客户端可能是一部移动电话,它可以更改其IP地址。我理解,要使客户端成为侦听器,服务器不需要知道客户端的IP 谢谢客户端套接字不侦听传入连接,而是启动到服务器的传出连接。服务器套接字侦听传入的连接 服务器创建套接字,将套接字绑定到IP地址和端口号(对于TCP和UDP),然后侦听传入的连接。当客户端连接到服务器时,将创建一个新的套接字用于与客户端通信(仅

例如,如果客户端侦听套接字,它如何知道有新内容?我假设服务器无法直接向客户机发送数据,因为客户机可能位于路由器后面,没有端口转发,因此无法直接连接。客户端可能是一部移动电话,它可以更改其IP地址。我理解,要使客户端成为侦听器,服务器不需要知道客户端的IP


谢谢

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

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

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


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

TCP迭代服务器接受客户端的连接,然后处理它,完成来自客户端的所有请求, 并断开连接。TCP迭代服务器一次只能处理一个客户端的请求。只有当所有的 客户端的请求得到满足后,服务器可以继续后续的请求。如果一个客户端占用
服务器,其他客户端无法工作,因此TCP服务器很少使用迭代服务器模型。

简介(与TCP协议相关)。连接直接或不直接的事实不会改变任何东西。字节(以数据包的形式)进入您的计算机(它可能是网卡上的缓冲区),并因此向您的软件发送信号。