Socket c#通过互联网聊天?

时间:2012-06-20 09:09:57

标签: c# sockets

我遇到连接外部源插座的问题

见下面我的构造函数。

//使用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防火墙并向前添加端口,但它没有连接。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用UDP时,您必须确保正确设置数据包可以传输的HOPS数量。

我不是很确定,但我认为默认值是0或1。

使用套接字上的Ttl属性进行实验。如果您在非常短的路径上进行测试,请尝试将其设置为10.

或者将其设置得更高,因为数据报的ttl属性表示数据包可以通过它到达目的地的点/路由器(实际上是跳数)。

值范围可以是0到255.

希望这有帮助