【发布时间】:2021-03-18 17:27:42
【问题描述】:
我有一个服务器程序。下面给出代码sn-p;
int sd = socket(AF_INET , SOCK_STREAM , 0);
....
//socket is set a a non blocking socket
....
bind(sd, (struct sockaddr *)&address, sizeof(address));
...
listen(sd, 3);
..
int i = 0;
while(TRUE) {
int new_sd[i] = accept(sd,sockadd,sockadd_len);
i++;
}
场景是 3 个客户端连接到此服务器/套接字。当这些客户端开始向该服务器发送数据时,哪个套接字描述符将在服务器中具有该 (new_sd[0],new_sd[1],new_sd[2])?数据将如何分布在不同的套接字描述符之间?
【问题讨论】:
-
基于连接的客户端地址
-
accept()返回的每个描述符都是一个不同的套接字连接。当客户端向您的服务器发送数据时,相应的套接字将处于可读状态。使用recv()或read()从相应的套接字描述符中读取该客户端的数据。使用select()或(e)poll()了解哪些套接字描述符处于可读状态。