我正在聊天服务器和客户端使用tcp/ip在c。我制作了多个客户端的服务器部分。在客户端,我有一个while循环可以发送一行,然后等待服务器回复。我想让客户端轮询send和recv函数来检查另一个客户端是否发送了一些东西。这就是我 -TCP/IP轮询客户端发送和recv在c
while (1){
char buffer[BUFLEN];
memset(buffer, 0, sizeof buffer);
gets(buffer);
//sendall(sd, buffer, BUFLEN);
send(sd, buffer, BUFLEN, 0);
printf("sent:%s\n",buffer);
//recvline(sd, buffer, BUFLEN);
recv(sd, buffer, BUFLEN, 0);
printf("recieved:%s\n", buffer);
}
如何查询在同一时间同时发送()和recv()和执行至上的一个?
想要做这样的事情..
if(send(sd, buffer, BUFLEN, 0) == true)
send something
else if(recv(sd, buffer, BUFLEN, 0) == true)
receive something
您可能正在寻找['select()'](http://linux.die.net/man/2/select)函数来*读取和写入文件描述符之间的* multiplex *。 – chrisaycock
这将如何工作?你可以解释吗? – fatrock92
不要假设send()或recv()处理你在第3个参数中给出的字符数;改用返回值。 – wildplasser