私は非常に面倒な問題があります。私はmIRC/Skypeアプリケーションを持っています。つまり、テキストと音声のチャットルームです。テキスト&のチャットルームのものはTCPを通って無事に動作し、UDPは他の接続されたクライアントに記録されたデータのみを中継します。C#udpclient/udp socket - ローカルではあるがグローバルアドレスではない
私のホームネットワーク上の2つのクライアント間で、オーディオ転送が正常に動作します。しかし、グローバルクライアントに対して、サーバは彼からのパケットを受信するか、サーバからパケットを受信します。
はここでの例です:222.222.222.222 サーバー..
サーバーのグローバルIPアドレスをクライアントがudpclientを使用しているが、結果はとにかく同じであり、それはあまりにもローカルに動作しながら、
サーバーは、UDPソケットを使用していますローカルIP:192.168.2.3 サーバポート:9999
クライアントのグローバルIP:111.111.111.111 クライアントのローカルIP:192.168.0.100 クライアントポート:8888
サーバー * 192.168.2.3にそのソケットをバインド:9999 * 111.111.111.111から受け取る:クライアント は* 192.168.0.100にそのソケットをバインド
8888:8888 *は111.111.111.111.111に送信します * 222.222.222.222から受信:9999 * 222.222.222.222に送信:9999
...私の言いたいことを得る。私はなぜデータが届かないのか分かりません。私はポート53(クライアントとサーバーの両方)で送受信を試みましたが、それは必要ではないでしょうか?私はトラフィックがとにかく(義務の呼び出しのようなゲームと同様)を通過する必要があります、いいえWindowsファイアウォールがアクティブではない、その場合はルータです。
クライアント/サーバーは、receiveFrom/sendToではなくconnect()を使用します。私もそれを使用してみましたが、違いはありません。
私はデバッグするため、その不可能のどちらかは例外か何かを得るん:(
おそらく理由何ができるか、それが世界的にローカルではなく、働くことを考えてみましょう;?私はそれが本当にファイアウォールの問題のように聞こえる同意しません、しかしI'eが..私は私のシナリオで適用thatsの方法を見てはいけない、と私はポート53と他の開いているポートにしようとした上記のような
乾杯:)
EDIT:コードのそのかなりたくさん、しかし、もし必要であればコピーすることができます
例外が表示されない理由は、UDPが発火して忘れているためです。発行者はローカルセットアップで問題なくブロードキャストを送信していますが、受信者がブロードキャストを受け取ることができないという問題があります。 – MrEyes
グローバルには、ローカルネットワーク上ではなく、インターネット経由のクライアントを意味します。たとえば、ローカルネット上では、グローバルIPの代わりにローカルIPを使用します。マルチキャストは、必要なゲートウェイでパケットを複製することによって複数のコンピュータに送信するだけですか?単純に1対1の接続を試してみたい – KaiserJohaan
1対1の接続であれば、ブロードキャストプロトコルを使用する代わりに標準のソケット/リモーティング/ wcfを使用する必要があります。 – MrEyes