#unity/日常积累

listen 函数 (winsock2.h)

  • 项目
  • 2024/03/04

反馈

本文内容

  1. 语法
  2. 参数
  3. 返回值
  4. 注解

显示另外 2 个

侦听函数将套接字置于侦听传入连接的状态。

语法

1
2
3
4
int WSAAPI listen(
  [in] SOCKET s,
  [in] int    backlog
);

参数

[in] s

标识绑定的未连接的套接字的描述符。

[in] backlog

挂起的连接队列的最大长度。 如果设置为 SOMAXCONN,则负责套接字 的基础 服务提供商会将积压工作设置为最大合理值。 如果设置为 SOMAXCONN_HINT (N) (其中 N 为数字) ,则积压工作值为 N,调整为在 200、65535) (范围内。 请注意, SOMAXCONN_HINT 可用于将积压工作设置为比 SOMAXCONN 更大的值。

SOMAXCONN_HINT 仅受 Microsoft TCP/IP 服务提供商支持。 没有用于获取实际积压工作值的标准预配。

返回值

如果未发生错误, 则侦听 返回零。 否则,将返回 值 SOCKET_ERROR ,并且可以通过调用 WSAGetLastError 来检索特定的错误代码。

注解

若要接受连接,首先使用套接字函数创建 套接字 ,并使用 绑定 函数绑定到本地地址。 使用 listen 指定传入连接的积压工作,然后使用 accept 函数接受连接。 面向连接的套接字(例如 SOCK_STREAM 类型的套接字)用于 侦听。 _套接字将_置于被动模式,其中传入的连接请求被进程确认并排队等待接受。

SOMAXCONN_积压_工作的值是一个特殊常量,指示负责套接字 _的基础_服务提供商将挂起连接队列的长度设置为最大合理值。

在 Windows 套接字 2 上,此最大值默认为一个大值, (通常为数百个或更多) 。

在蓝牙应用程序中调用 侦听 函数时,强烈建议对 积压工作 参数使用低得多的值, (通常为 2 到 4) ,因为只接受少数客户端连接。 这会减少分配供侦听套接字使用的系统资源。 这一相同建议适用于其他只需要几个客户端连接的网络应用程序。

侦听函数通常由一次可以有多个连接请求的服务器使用。 如果连接请求到达且队列已满,客户端将收到指示 WSAECONNREFUSED 的错误。

如果没有可用的套接字描述符, 则侦听 会尝试继续正常运行。 如果描述符可用,则稍后对 listen 或 accept 的调用会将队列重新填充为 积压工作 参数指定的当前或最新值(如果可能),并恢复侦听传入连接。

如果在已侦听套接字上调用 listen 函数,它将返回成功,而不会更改 积压工作 参数的值。 在侦套接字的后续调用中,将_积压工作_参数设置为 0 不被视为正确重置,尤其是在套接字上存在连接时。