2011-10-22 10 views
0

[OK]を、私は次のコードを使用してIPアドレスに接続されています:C#の - System.Net Socket.Listenバックログ

 IPAddress myIpAddress = IPAddress.Parse("10.10.15.200"); 

     IPEndPoint ip = new IPEndPoint(myIpAddress, 5001); 
     Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
     socket.Connect(ip); 

私は今、ソケットを聞きたいです。私がsocket.Listenと入力すると、intellisenseはバックログ番号を入力する必要があると言いますが、これはどういう意味ですか?

また、ソケットを聴くと、私が聞いている内容をどのようにキャプチャしますか?

おかげ

ジョン

+0

再バックログ - MSDN:http://msdn.microsoft.com/en-us/library/system.net.sockets.socket。 listen.aspx –

+0

コンテンツを取得するには - おそらく受信 –

答えて

1

あなたのソケット/エンドポイントに到着したものを読むためにBeginAcceptを使用することができます。

は、ここでは、MSDNの完全な例があります:Socket.BeginAccept Method

// This server waits for a connection and then uses asynchronous operations to 
    // accept the connection with initial data sent from the client. 


    // Establish the local endpoint for the socket. 

    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); 
    IPAddress ipAddress = ipHostInfo.AddressList[0]; 
    IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); 

    // Create a TCP/IP socket. 
    Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

    // Bind the socket to the local endpoint, and listen for incoming connections. 
    listener.Bind(localEndPoint); 
    listener.Listen(100); 

    while (true) 
    { 
     // Set the event to nonsignaled state. 
     allDone.Reset(); 

     // Start an asynchronous socket to listen for connections and receive data from the client. 
     Console.WriteLine("Waiting for a connection..."); 

     // Accept the connection and receive the first 10 bytes of data. 
     int receivedDataSize = 10; 
     listener.BeginAccept(receivedDataSize, new AsyncCallback(AcceptReceiveCallback), listener); 

     // Wait until a connection is made and processed before continuing. 
     allDone.WaitOne(); 
    } 

} 


public static void AcceptReceiveCallback(IAsyncResult ar) 
{ 
    // Get the socket that handles the client request. 
    Socket listener = (Socket) ar.AsyncState; 

    // End the operation and display the received data on the console. 
    byte[] Buffer; 
    int bytesTransferred; 
    Socket handler = listener.EndAccept(out Buffer, out bytesTransferred, ar); 
    string stringTransferred = Encoding.ASCII.GetString(Buffer, 0, bytesTransferred); 

    Console.WriteLine(stringTransferred); 
    Console.WriteLine("Size of data transferred is {0}", bytesTransferred); 

    // Create the state object for the asynchronous receive. 
    StateObject state = new StateObject(); 
    state.workSocket = handler; 
    handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, 
    new AsyncCallback(ReadCallback), state); 
} 
+0

ありがとう、私は質問があります。どこから「allDone」を取得していますか?私はおそらくちょうど明白な何かを明らかに欠けているが、正しい方向に私を指す場合、それは華麗だろう。ありがとう – JMK

+0

msdnの記事のリンクを確認してください。おそらく、どこに定義されているのかわからない場合は、それを削除することができます。 –

+0

リンクには定義されていないので、これは私がやることです。 – JMK

関連する問題