2012-06-20 38 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。我已修復 –