2012-06-20 94 views
2

我遇到从外部源连接的套接字问题Socket c#通过互联网聊天?

请参阅下面我的构造函数。

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

+0

你需要让你的问题更清晰。你有没有收到任何错误信息?或者它只是无法连接?它曾经工作过吗? –

+0

是的。它在本地机器上运行正常。但通过互联网运行它不连接 –

+3

你是否证实至少ping可以在这些IP之间工作? –

回答

0

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

我不是大家肯定,但我认为,默认值是0或1

使用您的插槽上的TTL属性与此实验。尝试将其设置为10,如果您正在测试的路径很短。

或者将其设置得更高byt注意数据报的ttl属性表示数据包可以经过的点数/路由器数量(实际上是跳数)以便到达目的地。

值范围可从0到255

希望这有助于

+1

我不认为这可能是一个问题在这里。 –

+0

谢谢大家帮忙,我的问题是我用TCP打开了端口1450。有点混乱。我必须用UDP打开端口1450。我已修复 –