2012-05-07 70 views
1

stunserverリモートコンピュータを2台使用してデータを送信することはできません。データはローカルコンピュータから取得されますが、リモートコンピュータのデータは取得されません。私は私のプログラムを使用していリモートコンピュータでc#を実行してstunserverを使用してデータを送受信

、stunserver

public void run() 
{ 
    UpdateText("Now Listening.."); 
    remoteSender = new IPEndPoint(IPAddress.Any, 0); 
    tempRemoteEP = (EndPoint)remoteSender; 
    byte[] packet = new byte[1024]; 
    while (true) 
    { 
     if (socket.Available > 0) 
     { 
      this.nbBytesRx = socket.ReceiveFrom(packet, ref tempRemoteEP); 
      nbPackets++; 
      seqNo = BitConverter.ToInt16(packet, 0); 
      UpdateText(nbPackets.ToString() + ":" + seqNo.ToString() + "/"); 
     } 
    } 
} 

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 

socket.Bind(new IPEndPoint(IPAddress.Any, 0)); 
string localEP = socket.LocalEndPoint.ToString(); 
string publicEP = ""; 
string netType = ""; 
STUN_Result result = STUN_Client.Query("stunserver.org", 3478, socket); 
netType = result.NetType.ToString(); 
if (result.NetType != STUN_NetType.UdpBlocked) 
{ 
    publicEP = result.PublicEndPoint.ToString(); 
} 
else 
{ 
    publicEP = ""; 
} 
UpdateText("Local EP:" + localEP); 
UpdateText("Public EP:" + publicEP); 

ThreadStart startMethod = new ThreadStart(this.run); 
thread = new Thread(startMethod); 
thread.Start(); 
+0

stunserver link = http://www.lumisoft.ee/lswww/download/downloads/Net/LumiSoft.Net.zipにlumisoftライブラリを使用します。 – mcvater

答えて

1

私は同じ問題に取り組んで、そして同じライブラリを使用しています。

エンドポイントを取得したかどうか確認しましたか?その尖ったサーバーがオンラインではないことがわかった。だから、私はサーバーのリストを作成しました。

公共EP得るために、私の方法:

public static IPEndPoint GetMyPublicEP() { 

// Create new socket for STUN client. 
      Socket _socket = new Socket 
       (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
      _socket.Bind(new IPEndPoint(IPAddress.Any, 0)); 

      List<string> _stunServers = new List<string> { // список стан серверов для проверки своей ендпоинт, не все работают 
       "stun.l.google.com:19302", 
       "stun1.l.google.com:19302", 
       "stun2.l.google.com:19302", 
       "stun3.l.google.com:19302", 
       "stun4.l.google.com:19302", 
       "stun01.sipphone.com", 
       "stun.ekiga.net", 
       "stun.fwdnet.net", 
       "stun.ideasip.com", 
       "stun.iptel.org", 
       "stun.rixtelecom.se", 
       "stun.schlund.de", 
       "stunserver.org", 
       "stun.softjoys.com", 
       "stun.voiparound.com", 
       "stun.voipbuster.com", 
       "stun.voipstunt.com", 
       "stun.voxgratia.org", 
       "stun.xten.com" 
      }; 

      foreach (string server in _stunServers) 
      { 
       try 
       { 
        STUN_Result result = STUN_Client.Query(server, 3478, _socket); 
        IPEndPoint myPublicEPStun = result.PublicEndPoint; 

        if (myPublicEPStun != null) 
        { 
         _myPublicEPStun = myPublicEPStun; 
         break; 
        } 
       } 
       catch (Exception E) 
       { 
        Console.WriteLine("Якась необ`ясніма магія трапилась"); 
       } 
      } 
      return _myPublicEPStun; 
     } 
0

を私は同じ問題を抱えていた...私はそれがWindowsファイアウォールを無効にすることを解決しました。すべてのトラフィックをブロックしていました。

関連する問題