私はソケットの初心者です。私はクライアント サーバー アプリケーションを作成していますが、次の問題が発生しました。
クレント:
void * msgDispatcher(...){
...
while(isRunning){
read(rxSocket, buf, ...);
}
}
int main(...){
...
connect(txSocket, ...);
connect(rxSocket, ...);
createThread(..., msgDispatcher, ...);
while(isRunning){
fgets(buf, ...);
write(txSocket, buf, ...);
}
}
サーバ:
int main(...){
...
listenerSocket = socket(...);
bind(listenerSocket,...);
listen(listenerSocket, 10);
rxSocket = accept(listenerSocket, (sockaddr*) &clientAddr, &addrLength);
listen(listenerSocket, 10);
txSocket = accept(listenerSocket, (sockaddr*) &clientAddr, &addrLength);
while(isRunning){
read(rxSocket, ...);
write(txSocket, ...);
}
}
クライアントから送信したメッセージはすべてサーバーで受信されますが、サーバーからの応答はすべてクライアントで受信されません。サーバーは write(txSocket, ...);を使用してメッセージを送信します。ここには問題はありません。しかし、クライアントはread(rxSocket, ...)で常に待機しており、メッセージが受信されません。
このコードの何が間違っていますか? サーバー上の1つのクライアントから2つのソケットを接続/受け入れる方法、またはそれを行う最良の方法はありますか?
ありがとう