ポートXでリッスンしているサーバーがクライアントから要求を受信した後、別のプロセスからの応答とsendto呼び出しによるソケットを送信できます。また、クライアントはsendto(サーバーアドレス)呼び出しで要求を送信することに注意してください。ここでサーバーは別のプロセスとソケットから応答を送信できますか?
は手順は次のとおりです。
- サーバーは、ソケットを開き、IPアドレス(ABCD)とポートにバインドします(x)の
- クライアントがソケットを開き、IPアドレス(KLMN)にそれを結合し、 port(z)を呼び出し、sendtoコールでサーバに要求を送信します。
- サーバー(別のプロセスで)ソケットを開き、IPアドレス(ABCD)とポート(Y)にバインドし
- サーバは、クライアントとサーバの両方が知っている
のsendtoとクライアントへのソケットの上から応答を送信しますお互いのIPアドレスとポート番号。
サーバーが別のプロセスから応答を送信したときに、そのクライアントが応答を受け取っていないことに気づいています。そうでなければ、そうする。
... –
は、「私は、サーバーが別のプロセスからの応答を送信するときにクライアントが応答を受信しないことに気付いています」。あなたのコードのバグのために、そうした理由はありませんか?あなたが記述したものは、正しくコーディングされていれば可能です。しかし、コードを表示していないので、私たちはさらにあなたを助けることはできません。 – kaylum
あなたのソケットが 'TCP'指向の場合、子プロセスを生成することができ、受け入れられた接続のファイル記述子は継承されます。次に 'send()'と 'recv()'を使います。しかし、それはUDPソケットを使用しているようです。 'UDP'ソケットでは、ソケットを作成してバインドするだけです。 'listen()'ポートはありません。次に 'sendto()'と 'recvfrom()'を使います。あなたのケースでは、クライアントから送信されたメッセージを 'recvfrom() 'するために、すでにソケットの作成とバインディングを継承した子を生成する必要があります。 'sendto()'はdestaddrを無視します。 – alvits