select を使用して、同じソケット記述子 (サーバー側) のクライアント/サーバーで送受信したいと考えています。
timestruct* myTime;
sockfd = accept(listeningFd, 0, 0);
while(1)
FD_ZERO(&my_fd_set)
maxFd = sockfd
FD_ZERO(&my_fd_set);
FD_SET(sockfd, &my_fd_set);
select(maxFd+1, &my_fd_set, &my_fd_set, NULL, myTime);
for (j=0; j<=maxFd; j++)
if(FD_ISSET(j, &temp_fd_set))
if(j==sockfd)
send()
if(j==sockfd)
recv()
これは本質的に私がやりたいことです。sockfd は送信と受信で同じ値になるため、明らかにこれは機能しません。fork() を使わずにこれを行う方法はありますか?? 現在、recv と send をブロックしていますが、クライアントに送り返すために別のコマンドが処理されている間に、サーバーが複数のコマンドを recv する必要がある場合があります。私は c と 'select()' についてよく知っています。select には fd_set の 3 つのオプション (読み取り、書き込み、実行) があるため、これを実行できるのではないかと考えました。
ありがとうございました。