2

外部ソースから接続するソケットに問題があります

以下の私のコンストラクタを参照してください。

//UDP ソケットの使用

clientSocket = new Socket(AddressFamily.InterNetwork,
                          SocketType.Dgram, ProtocolType.Udp);
EndPoint ourEP = new IPEndPoint(IPAddress.Any, 1450);
//Listen asynchronously on port 1450 for coming messages (Invite, Bye, etc).
clientSocket.Bind(ourEP);

//Receive data from any IP.
EndPoint remoteEP = (EndPoint)(new IPEndPoint(IPAddress.Any, 0));

byteData = new byte[1024];
//Receive data asynchornously.
clientSocket.BeginReceiveFrom(byteData,
                           0, byteData.Length,
                           SocketFlags.None,
                           ref remoteEP,
                           new AsyncCallback(OnReceive),
                           null);

これは接続ボタン機能です:

private void btnCall_Click(object sender, EventArgs e)
{
    //Get the IP we want to connect.
    otherPartyIP = new IPEndPoint(IPAddress.Parse(txtCallToIP.Text), 1450);
    otherPartyEP = (EndPoint)otherPartyIP;
}

インターネット経由でピアツーピアのチャット アプリケーションを作成します。ポート 1450 のファイアウォールを開き、ポート フォワードを追加しましたが、接続していません。助けてください。

4

1 に答える 1

0

UDP を使用する場合、パケットが移動できる HOPS の量が正しく設定されていることを確認する必要があります。

確かではありませんが、デフォルトは 0 か 1 のどちらかだと思います。

これを試すには、ソケットの Ttl プロパティを使用します。非常に短いパスでテストする場合は、10 に設定してみてください。

データグラムの ttl プロパティは、パケットが宛先に到達するために通過できるポイント/ルーター (実際にはホップ) の量を示しているため、注意してください。

値の範囲は 0 ~ 255 です。

お役に立てれば

于 2012-10-02T11:42:59.150 に答える