2016-04-18 22 views
-4

現在、RedHatでアプリケーションを実行していますが、何らかの問題が発生しています。 私はRedHatを実行している2台のコンピュータとUDPソケットを使って通信しています。RedHatソケットがパケットを受信しない

ソケットが両側で正しく作成され、クライアントがサーバーを正しくバインドしています。クライアントがメッセージを送信すると、メッセージがサーバー側でTCPDumpで正しく受信されたことがわかりますが、ソケットのReceive()関数は呼び出されず、アプリケーションは何もしません。

私がlocalhost上で実行すると、アプリケーションはうまく動作しています。

誰に問題が発生する可能性があるのですか?

+0

'Receive()'関数が呼び出されない場合、なぜメッセージが受信されなかったのに驚いていますか? – EJP

+0

パケットが正しいポート番号で(tcpdumpを使って)サーバーによって正常に受信されたために何も起こらないので、私は驚いています。通常は何もしないでReceive関数に入るはずです。私はあなたが意味することを理解してくれることを願っています。 –

+0

何のReceive()関数について話していますか?それはあなたが投稿していないコードのものでしょうか?それはあなたが開示していない一連の出来事を経て届いていますか? – EJP

答えて

2

tcpdumpを実行すると、実際の宛先(つまり、受信しているアプリケーション、つまりサーバープログラム)ではなく、宛先マシンにパケットが到達したかどうかを実際に確認しようとしています。 tcpdumpは、パケットがサーバーマシンに到達し、TCPスタックにそれがあることを保証するだけです。今はそれを消費するアプリケーション(つまりサーバープログラム)までです。これは、recv()が成功した場合にのみ発生します。すべてのソケット機能の背後にあるエラーをいつでも理解し、必要な修正処置を実行することができます。

関連する問題