【发布时间】:2012-02-03 23:29:55
【问题描述】:
我需要在 C 中实现一个服务器/客户端代码。
服务器需要能够同时接受四个连接。
我无法让这个工作。到目前为止我做了什么:
1. 创建一个套接字
2.设置为非阻塞:fcntl(sock,F_SETFL, O_NONBLOCK);
3.绑定它
4.收听:listen(sock, 4);
我不太确定的部分是如何接受客户端的连接。我的代码如下所示:
while (1) {
if ((sockfd = accept(sock, (struct sockaddr *) &client_addr, &client_size)) < 0) {
perror("Error\n");
}
read(sockfd, &number, sizeof(number));
write(sockfd, &number, sizeof(number));
}
当我执行客户端和服务器代码时,客户端似乎正在向套接字写入一些东西,而服务器从未接收到该套接字并且整个执行都阻塞了。 接受来自多个客户端的连接的正确方法是什么?
【问题讨论】: