我正在編寫一個用C語言進行局域網聊天的程序。對於聊天應用程序,只要他發送聊天應用程序,我們就需要接收這個聊天室聊天。但問題是我使用gets()函數從一側輸入聊天內容,而當gets正在運行時,如果聊天來自另一端,它將不會被接收,直到我發送聊天到另一端。以下是我用於在服務器端發送和接收聊天的代碼。我已經刪除了我使用的所有條件,因爲它們都被證明毫無價值。請告訴我一種方法,一旦發送即可顯示來自另一端的聊天,而不管當前正在執行哪條語句。提前致謝。這是我現在的發送和接收部分的代碼:轉到另一個語句,同時獲取函數在C中運行
while(1)
{
printf("\n");
gets(send_data);
send(connected, send_data,strlen(send_data), 0);
bytes_recieved = recv(connected,recv_data,1024,0);
recv_data[bytes_recieved] = '\0';
printf("Client Says: %s " , recv_data);
fflush(stdout);
}
http://en.wikipedia.org/wiki/Asynchronous_I/O – Cubic
你認真使用'gets'? o_O – jamesdlin
正如@jamesdlin暗示的那樣,'gets'本質上已被棄用(因爲它非常不安全並且很容易導致緩衝區溢出錯誤),所以應該使用'fgets'或類似的。更多信息:http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1049157810&id=1043284351 – huon