2017-11-21 8 views
0

私はC#ソケットを使用して非同期サーバーソケットコードを作成しました。サーバーソケットはクライアントを受け入れることができません。 (C#UWP非同期ソケットプログラミング)

私はコンソール環境、

にテスト、その後、コードを書いたが、それが働いていたが、私はUWPでそのコードをテストしました。

しかし、動作しませんでした。クライアントを受け入れることができません。

すべてのエラーはありませんが、このソケットコードはクライアントを受け入れることができません。

私はどのように私を解決できますか?私を助けてください。

private Socket m_ServerSocket; 
    private List<Socket> m_ClientSocket; 

    private int m_iPort = 1123; 
    private int m_iClients = 8; 
    private int m_iBufferSize = 128; 

public bool Open(int IN_iPort, int IN_iClients, int IN_iBufferSize) 
    { 
     try 
     { 
      m_iPort = IN_iPort; 
      m_iClients = IN_iClients; 
      m_iBufferSize = IN_iBufferSize; 

      m_ClientSocket = new List<Socket>(); 

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

      IPEndPoint ipep = new IPEndPoint(IPAddress.Any, m_iPort); 
      m_ServerSocket.Bind(ipep); 
      m_ServerSocket.Listen(m_iClients); 

      SocketAsyncEventArgs args = new SocketAsyncEventArgs(); 
      args.Completed 
       += new EventHandler<SocketAsyncEventArgs>(Accept_Completed); 
      m_ServerSocket.AcceptAsync(args); 
     } 
     catch (Exception e) 
     { 
      return false; 
     } 

     m_bIsOpen = true; 
     return true; 
    } 

    private void Accept_Completed(object sender, SocketAsyncEventArgs e) 
    { 
     Socket ClientSocket = e.AcceptSocket; 
     m_ClientSocket.Add(ClientSocket); 

     if (m_ClientSocket != null) 
     { 
      SocketAsyncEventArgs args = new SocketAsyncEventArgs(); 
      byte[] szData = new byte[m_iBufferSize]; 
      args.SetBuffer(szData, 0, m_iBufferSize); 
      args.UserToken = m_ClientSocket; 
      args.Completed 
       += new EventHandler<SocketAsyncEventArgs>(Receive_Completed); 
      ClientSocket.ReceiveAsync(args); 
     } 

     e.AcceptSocket = null; 
     m_ServerSocket.AcceptAsync(e); 
    } 
+0

uwpパッケージマニフェストの 'Internet(Clent&Server)'オプションをチェックしましたか? –

+0

これで確認しました。私は逃しました。ありがとう! – user8977483

答えて

1

私はあなたのコードをチェックして、あなたのコードに存在しないようです。プロジェクトappxmanifestInternet(Clent&Server)オプションがチェックされているかどうか確認してください。詳細については、Sockets公式ドキュメントを参照してください。

関連する問題