1

私はCでLANチャット用のプログラムを書いています。チャットアプリケーションの場合、彼が送信するとすぐにクリントチャットを受信する必要があります。しかし、問題は、gets()関数を使用して一方の側からチャットを入力し、getsの実行中に、もう一方の端からチャットが来た場合、もう一方の端にチャットを送信するまでチャットが受信されないことです。 。サーバー側でチャットを送受信するために使用したコードは次のとおりです。使用したすべての条件を削除したのは、それらがすべて無価値であることが判明したためです。現在実行されているステートメントに関係なく、送信されたらすぐに相手側からチャットを表示する方法を教えてください。前もって感謝します。送信部分と受信部分の現在のコードは次のとおりです。

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);
}
4

1 に答える 1

5

代わりに、getsノンブロッキングI / Oを使用するか、スレッドを使用して並列計算を有効にし、同時に複数のクライアントをリッスンする必要があります。

これがノンブロッキングI/Oの紹介ページです

于 2012-05-14T10:38:49.617 に答える