简体   繁体   English

C#-System.Net Socket.Listen积压

[英]C# - System.Net Socket.Listen Backlog

Ok, I have connected to an IP address using the following code: 好的,我已使用以下代码连接到IP地址:

        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);

I now want to listen to the socket. 我现在想听听套接字。 When I type socket.Listen, intellisense says I need to enter a backlog number, what does this mean? 当我键入socket.Listen时,intellisense说我需要输入一个积压编号,这意味着什么?

Also, once I am listening to the socket, how do I capture the content of what I am 'listening' to. 另外,一旦我听了套接字,我该如何捕获我正在“听”的内容。

Thanks 谢谢

John 约翰

you can use BeginAccept to read what arrived to your socket/endpoint. 您可以使用BeginAccept读取到达套接字/端点的内容。

there is a full example on MSDN, here: Socket.BeginAccept Method 在MSDN上有完整的示例,在这里: Socket.BeginAccept方法

// 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);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在C#套接字编程中调用Listen后重置积压 - Reset backlog after calling Listen in C# Socket programming 初学者问题-Visual C#-System.Net汇编和WebRequest - Beginners Question - Visual C# - System.Net Assembly and WebRequest 如何确定Socket.Listen()的MaxConnections? - How to determine MaxConnections for Socket.Listen()? 是否socket.listen(0); 暂停线程? - Does socket.listen(0); pause a thread? C# HttpClient 请求无法抓取(在 System.Net 和 Windows.Web http 请求上) - C# HttpClient request fails to scrape (both on System.Net and Windows.Web http requests) C#阅读 <system.net><mailSettings> 在外部DLL的web.config中 - C# Read <system.net><mailSettings> in web.config from external dll C#中System.Net的Webclient无法连接到服务器 - System.Net's Webclient in C# won't connect to server 在 C# 中以编程方式从 app.config 访问 system.net 设置 - Access system.net settings from app.config programmatically in C# 不返回1/5 cookie,C#简短而可爱的代码:RichTextBox,Form1_Load,使用System.Net / System.Collections.Specialized - Not returning 1/5 cookies, C# short and sweet code: RichTextBox, Form1_Load, using System.Net / System.Collections.Specialized System.Net和没有System.Net之间的区别 - The difference between with System.Net and without System.Net
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM