当前位置: 首页 > 知识库问答 >
问题:

确定套接字队列中的传入连接数

西门马鲁
2023-03-14

MSDN说Socket。听方法:

侦听会导致... Socket侦听传入连接尝试。backlog参数指定可以排队接受的传入连接数...使用接受或开始接受从队列中接受连接。

这意味着套接字将把传入的连接放入队列中。我们如何确定排队连接的数量?

var localEndPoint = new IPEndPoint(IPAddress.Any, Port);

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

serverSocket.Bind(localEndPoint);

// listen for incoming connections; queue `socketBacklog` of them
// Listen bit.ly/21vz22b
serverSocket.Listen(socketBacklog);

// how do we do this?
serverSocket.CountQueuedConnections()

我尝试过的一件事显然不起作用,就是服务器套接字。轮询(timeToWait,SelectMode。SelectRead)。这总是返回false。

共有1个答案

柳才良
2023-03-14

以MSDN的套接字代码示例为例:

异步服务器套接字示例

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

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

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

            // Start an asynchronous socket to listen for connections.
            Console.WriteLine("Waiting for a connection...");
            listener.BeginAccept( 
                new AsyncCallback(AcceptCallback),
                listener );

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

    } catch (Exception e) {
        Console.WriteLine(e.ToString());
    }

在此代码中,您可以轻松地在无限循环中添加一个计数器来确定有多少客户端已连接到服务器。

<代码>插座。侦听方法(Int32)仅提供可以连接到此ServerSocket的最大客户端数。此外,倾听不会阻塞。

 类似资料:
  • 问题内容: 如何创建SSL套接字连接? 我真的需要创建密钥库吗?该密钥库应该与我所有的客户端应用程序共享吗? 我用以下代码创建了一个服务器: 我用以下代码在android上创建了一个客户端: 但是当我尝试连接时,会引发以下错误: 问题答案: 您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。 您的代码需要一些参数才能运行: 您

  • 线程“main”java.net.ConnectException:连接超时:在java.net.dualStackplainsockeTimpl.Connect0(本机方法)在java.net.dualStackplainsockeTimpl.socketConnect(DualStackplainsockeTimpl.java:69)在java.net.abstractplainsockeTi

  • 我正在构建一个简单的客户端-服务器多人游戏,我想连接UDP套接字。但是,当我调用方法时,它会生成

  • 问题内容: 我正在加密服务器和客户端之间的TCP连接。在研究和测试过程中,我倾向于使用秘密密钥加密。我的问题是我找不到有关如何实现此功能的任何教程。我发现的教程围绕一次HTTP请求进行,我只需要一个SSL套接字。 我到目前为止编写的代码如下。我几乎可以肯定它需要扩展,我只是不知道该怎么做。任何帮助表示赞赏。 接受客户端连接的服务器代码 我只是不知道如何实际进行握手。 参考:http : //doc

  • 这很好,但没有SSL。 我已经使用OpenSSL为服务器和客户机生成了SSL证书,结果是: 服务器的证书(PEM格式) 客户端的证书(PEM格式) 服务器的私钥(PEM格式) 客户端的私钥(PEM格式) CA文件(PEM、CER和CRT格式) null 会出什么问题?