TCPとUDPの両方を使用するサーバーとクライアントを作成しようとしています。サーバーはLAN設定ではうまく動作しますが、WAN経由で送信された場合はUDPメッセージは受信されません。私は、データを送信するために使用されたUDPソケットが、情報を返すのに十分な長さのNATテーブルに残っていないためだと考えています。 UDPポートをルータで開いたままにする(ポート転送なしで)か、すでに接続されているTCP接続と同じポートをUDPに使用する方法はありますか?前もって感謝します。WAN上のTCPおよびUDPソケットサーバー
3
A
答えて
2
トラフィックが発生していない場合は、ファイアウォールによってブロックされている可能性があります。この場合、それは転送についてではなく、ポートを開くことです。
NAT /ファイアウォールデバイスでは、ほとんどの場合(すべてではないにしても)、NATを介して穴を開けるとUDPトラフィックが両方向に送信されます。つまり、NAT /ファイアウォールの背後にある私のラップトップがUDPパケットをインターネットに送り出すと、私のNAT /ファイアウォールは、元のポート番号にUDPトラフィックを戻すことができます。私はUDPでたくさん働いています。私の経験では、これはルールであり、例外はほとんどありません。
UDPパケットは配信されないことに注意してください。
クライアントはNATの後ろにいますか?クライアントから送信されたパケットはすべてサーバーに送信されますか?サーバーからクライアントへの方向で問題がありますか?
UDPとTCPに同じポート番号を使用しても、状況は変わりません。別のプロトコルであるため、TCP接続にピギーバックすることはできません。
Network Address Translation (NAT) Behavioral Requirements for Unicast UDP
関連する問題
- 1. Java Echo Server TCP *および* UDP実装?
- 2. Python icmpソケットサーバー(tcp \ udpではない)
- 3. ベスト・クライアント/サーバーのUDPおよびTCPデバッグ・ツール?
- 4. 非同期/同期およびTCPまたはUDP
- 5. Tcp、IP、およびUdpパケットをPythonで生成するには?
- 6. C/Linux TCPソケットサーバー
- 7. libtorrentおよびTCP :: Windowsの
- 8. TCPソケットサーバーC++/cウィンドウサイズ
- 9. ネットワークおよびTCP/IP
- 10. TCP Pythonソケットサーバーの応答
- 11. WSO2とTCPおよびRestserviceの統合
- 12. DHCP用のTCPポート67および68
- 13. TcpソケットのUdpパッケージ
- 14. TCPとUDPのスループット
- 15. C#ソケット(TCPとUDP)
- 16. UDPをTCPに変換する - Ngrok TCP => UDP
- 17. j2meクライアントソケットを持つJava TCPソケットサーバー
- 18. tcpソケットサーバーは送信しません
- 19. コンシューマ/プロデューサデザインを使用するTCPソケットサーバー
- 20. iptablesフィルタリングのパフォーマンス:TCPとUDP
- 21. TCPとUDPの違い
- 22. udp対tcpパケットのドロップ
- 23. 40,000以上のUDP/TCP/IP接続をエミュレートする
- 24. TCPパケットのMTUにTCPおよびIPv4ヘッダーが含まれていますか。
- 25. MSMQはTCPまたはUDP上で動作しますか?
- 26. CおよびC++でUDPソケットを送信
- 27. Java - UDP WANセッションが実行されない
- 28. Indy InputBufferのTCPクライアントおよび不正なバイト
- 29. nginx仮想ホスト、httpサーバ、およびtcpポートへの転送
- 30. クライアント上のDataGridView、ADO.NET、バインディング、およびページング
はい問題は、クライアント方向へのサーバです。あなたが言ったことに問題があると私は信じています。私は現在、UDP送信が最初に送信されたポートを使用していないため、NAT経由で戻ってきません。私はこれに対応するためにクライアントとサーバーの両方を調整しようとします。答えをありがとう。 – Stephen
あなたが示唆したことを試みましたが、それでも失敗しました。私はサーバーがWAN IPと接続時にユーザーから送信されたポートを取得し、クライアントはサーバーからの通信のためにすべてのポートでリッスンしています。いくつかのコードを見て、目に見える間違いがないかどうかを確認することは可能でしょうか?それは有り難いです。 – Stephen
@Stephen。確かに。あなたの質問へのリンクを追加してください。私はそれを行う方法は、サーバー側でrecvfrom()とsendto()を使用しています。そのソケットを特定のポート番号にバインドします。クライアント側では、単一のソケットを使用するようにしてください。 –