cでtcp/ipを使用してチャットサーバーとクライアントを作成しています。複数のクライアントをスレッド化するサーバー部分を作成しました。クライアント側では、行を送信してサーバーの応答を待つことができるwhileループがあります。クライアントにsend関数とrecv関数の両方をポーリングさせて、別のクライアントが何かを送信したかどうかを確認したいと思います。これは私が持っているものです-
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);
}
send()とrecv()の両方を同時にポーリングして、最初に来るものを実行するにはどうすればよいですか?
このようなことをしたい。
if(send(sd, buffer, BUFLEN, 0) == true)
send something
else if(recv(sd, buffer, BUFLEN, 0) == true)
receive something