TCP 服务器套接字

套接字创建

创建一个使用 TCP 的套接字。它与创建客户端套接字相同。

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

套接字绑定

将特定端口(参数 3)的给定网络(参数 2)的连接绑定到套接字。

第二个参数通常是 0.0.0.0,它接受来自所有网络的连接。它也可以

socket_bind 错误的一个常见原因是指定的地址已经绑定到另一个进程 。通常会杀死其他进程(通常是手动以防止意外杀死关键进程),以便释放套接字。

socket_bind($socket, "0.0.0.0", 6667) or onSocketFailure("Failed to bind to 0.0.0.0:6667");

将套接字设置为侦听

使用 socket_listen 使套接字侦听传入的连接。第二个参数是允许在接受之前排队的最大连接数。

socket_listen($socket, 5);

处理连接

TCP 服务器实际上是处理子连接的服务器。socket_accept 创建一个新的子连接。

$conn = socket_accept($socket);

来自 socket_accept 的连接的数据传输与 TCP 客户端套接字的数据传输相同。

如果要关闭此连接,请直接致电 socket_close($conn);。这不会影响原始 TCP 服务器套接字。

关闭服务器

另一方面,当不再使用服务器时,应调用 socket_close($socket);。这也将释放 TCP 地址,允许其他进程绑定到该地址。