2011-02-17 18 views
1

私はローカルでテストしていたTCPサーバーを作成しましたが、これはうまく動作し、今ではファイアウォールにポートを開いていますが、私はこれが私のソケットの設定にあると思います、どうすれば修正できますか?c#.net外部のtcpポートを開く

 System.Net.IPHostEntry localhost = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()); 

     #region Bind Socket & Listen for connections, accepting Asynchronously 

     System.Net.IPEndPoint serverEndPoint; 

     try 
     { 
      serverEndPoint = new System.Net.IPEndPoint(localhost.AddressList[0], _port); 
     } 
     catch (System.ArgumentOutOfRangeException e) 
     { 
      throw new ArgumentOutOfRangeException("Port number entered would seem to be invalid, should be between 1024 and 65000", e); 
     } 

     try 
     { 
      //_serverSocket = new System.Net.Sockets.Socket(serverEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
      //_serverSocket = new System.Net.Sockets.Socket(serverEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
      //_serverSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
      _serverSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
     } 
     catch (System.Net.Sockets.SocketException e) 
     { 
      throw new ApplicationException("Could not create socket, check to make sure not duplicating port", e); 
     } 

     try 
     { 
      _serverSocket.Bind(new IPEndPoint(IPAddress.Any/*.Parse("127.0.0.1")*/, _port));//serverEndPoint); 
      //_serverSocket.Bind(new System.Net.IPEndPoint(System.Net.Dns.GetHostEntry("localhost").AddressList[0],12345)); 
      _serverSocket.Listen(_backlog); 
     } 
     catch (Exception e) 
     { 
      throw new ApplicationException("Error occured while binding socket, check inner exception", e); 
     } 

     try 
     { 
      //warning, only call this once, this is a bug in .net 2.0 that breaks if 
      // you're running multiple asynch accepts, this bug may be fixed, but 
      // it was a major pain in the ass previously, so make sure there is only one 
      //BeginAccept running 
      _serverSocket.BeginAccept(new AsyncCallback(acceptCallback), _serverSocket); 
     } 
     catch (Exception e) 
     { 
      throw new ApplicationException("Error occured starting listeners, check inner exception", e); 
     } 

     #endregion 
+1

タイプは、netstat -aを正しいサブネットIPを使用してポートフォワーディングを設定していませんでした。 –

+0

netstatのヒントありがとう! – Chris

答えて

0

ソケットの設定が正しいか - 私は、サーバーが起動しているIP /ポートそれが聞いているかどうかを確認するために

+0

バー私は自分の答えを受け入れるために2日間待たなければならない..なぜですか? – Chris

関連する問題