我正在聊天服務器和客戶端使用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