2016-03-27 13 views
0

何らかの理由で、クライアントがオープンポートに接続していると思われ、パケットを送信しているように見える場合、サーバーが切断されているように見えます。C#TCP/IPサーバーが接続されていないと表示される

clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 


      IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, Convert.ToInt32(PORT)); 

      //Bind and listen 
      clientSocket.Bind(ipEndPoint); 
      clientSocket.Listen(5); 

      //Accept incoming 
      clientSocket.BeginAccept(new AsyncCallback(OnAccept), null); 

これ以降は、私のOnAcceptメソッドです。私は(テスト目的のために使用して何かイム)を接続するボックスのクライアントのうちを使用しています

private void OnAccept(IAsyncResult ar) 
    { 
     try 
     { 
      clientSocket.EndAccept(ar); 



      if (clientSocket.Connected == true) 
      { 
       clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), clientSocket); 
      } 
     } 
     catch (Exception ex) 
     { 
      log.Log(ex.ToString(), 2); 
     } 
    } 

は、しかし、私は耳を傾け、クライアント上で「接続」をクリックする接続を開始するとき。クライアントは「接続済み」状態になり、パケットの送信を開始します。しかし、 "if(clientSocket.Connected == true)"ステートメントは、ブレークポイントを実行した後であっても、タイミング問題ではないため、常に失敗します。

ご意見やご協力をいただければ幸いです。

答えて

0

私は非同期を使用して私が午前のようにリッスンすると、そのソケットに新しいソケットを受け入れる必要があるようです。

Socket clientSocket2 = clientSocket.EndAccept(ar); 

次に、cliientSocket2で接続を取得します。

関連する問題