2011-11-14 20 views
0

なぜこれがうまくいかないかわかりません。クライアントとサーバが同じPC(つまり、127.0.0.1)で動作していれば、私のアプリケーションは正常に動作しますが、そのデバイスのIPであるIP 82.41.108.125を使用して他のラップトップに接続することはありません。UDPは127.0.0.1以外のものに接続できません

これはなぜ起こっているのですか?

+1

UDPは何かに「接続」しません。あなたは「送る」または「受け取る」を意味します。 – EJP

+0

あなたのことを理解するのに役立つ情報を追加するために投稿を編集しました。 –

答えて

0

ファイアウォールは、すべてのコーディングが正常に機能していると仮定して、ポートをブロックしている可能性があります。クライアント/サーバのファイアウォールオプションでアプリケーションを実行しているポート番号を開いてみてください。物事にはいくつかの光を当てる必要があります

いくつかの追加情報が

ネットワークデバイスが使用ARP(アドレス解決プロトコル)およびRARP(逆アドレス解決プロトコル)は、バック層(MAC)アドレスをリンクするためにIPアドレスをマッピングします。ネットワークインターフェイスカード(イーサネットケーブルに接続するもの)は、両方のコンピュータに一意のMACアドレスを持ちます。各PCには、上位レベルのプロトコル(ネットワーク層のプロトコル)で使用されるように構成されたIPがあります。

コンピュータAは、コンピュータBのIPアドレスを知っています(コンピュータAとは異なります)。コンピュータAがコンピュータBに送信しようとすると、直接接続されていて、ルータなどを経由しないと仮定すると、コンピュータAのリンク層は、そのIPをコンピュータBのMACアドレスに変換する必要があります。これは、同じサブネットワーク上のすべてのネットワークPCにブロードキャストを送信することで実行されます。「お、これはあなたのIPですか?」本質的に。ブロードキャストされたものと一致するIPを持つものは「はい、それは私のものです - ここに私のMACアドレスがありますので直接私と話すことができます」

したがって、2台のコンピュータが同じIPを持っている場合、これはすべて地獄に行きます:)それをしないでください - 一意のIPを与え、コンピュータAが同じUDPポートとコンピュータBが聴いているIP同じように。通信は{IP、Port}のペアで動作します - そのような電話番号と市外局番。

また...

EJPで言ったように - UDPはコネクションレスプロトコルである - コンピュータだけでコンピュータBに送信し、コンピュータBが正しくリッスンしていることを期待しています。コンピュータBがリッスンしていない場合、またはデータを処理するために適切な状態になっていない場合、データは単に破棄されて失われます。コンピュータAはこれが起こったことを知らない。信頼できる通信が必要な場合は、コンピューティングBがコンピュータAのデータを受信し、代わりにTCPを使用するという保証があります。接続を確立するための3方向ハンドシェイクを行い、肯定応答を使用してデータが再送信されることを確認しますもう一方の端に達する。

+0

私のラップトップは両方とも同じIPを持っています。ファイアウォールは現在無効になっていますが、データは到着していません。何か案は? – Chris

+0

ラップトップに最初に別のIPアドレスを指定してください。同じIPアドレスを使用しないでください。私は彼らがお互いに話したり、同じIPでネットワーク上で許可されることにも驚いています。彼らがまだお互いに話していない場合は、おそらく人々が見るためにいくつかのコードを投げるべきです。 INADDR_ANYを使用して、すべてのインターフェースやそのような情報からの情報を受け入れることはないかもしれません。 –

+0

"両方のラップトップが同じIPを持っています。 *それは問題です。*送信するIPアドレスが自分のものである場合、ラップトップAはBに何かを転送する必要がありますか? – EJP

0

ローカルホスト(127.0.0.1)でリッスンしている可能性があり、他のトラフィックを受け付けない可能性があります。ワイルドカードアドレスを使用します。

netstat -npuでサーバーをチェックしてください。

そうでない場合はおそらくファイアウォールの問題です。tcpdumpまたはwiresharkで確認してください。

+0

wiresharkは、停止したファイアウォールをオフにした後にポートに到達できなかったことを示していました。 – Chris

+0

他の可能性を確認してください。 –

+0

私はワイルドカードとしてhtonl(INADDR_ANY)を使用しています – Chris

0

ノートパソコンのファイアウォールをチェックする...ほとんどの場合、スピルポートとして機能します。

関連する問題