IPV4 TCP套接字服务端

wxvirus2022年6月26日
大约 1 分钟

[https://www.php.net/manual/zh/book.stream.phpopen in new window](PHP Stream 函数文档地址)

IPV4 TCP 套接字服务

Unix 域套接字进程间通信

$socketFd = socket_create();

第一个参数:

$domain套接字通信域参数

  • AF_INET:IPV4
  • AF_INET6: IPV6
  • AF_UNIX:本地通讯协议,具有高性能和低成本的 IPC(进程间通信)

主要以 IPV4 为主。

第二个参数:

$type:套接字类型:TCP/UDP

第三个参数:协议,如果是 TCP 或 UDP,可以直接使用SOL_TCPSOL_UDP

第一步:创建套接字,实际上返回一个文件描述符

$socketFd = socket_create(AF_INET, SOCK_STREAM, 0);

第二步:命名socket绑定,把端口、IP 绑定到 socket 文件描述符上

第三个参数可以在unix进程间通信的时候可以不传

成功:返回true

失败:返回false

socket_bind($socketFd, "0.0.0.0", "12345");

第三步:监听

第二个参数是接收的监听队列的个数

socket_listen($socketFd, 5);

第四步:接收客户端连接

$conn = socket_accept($socketFd);

第五步:发送数据

socket_send($conn, "hi", 2, 0);

发送 HTTP 内容

$data = "HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nok";
echo socket_send($conn, $data, strlen($data), 0);

这样如果使用 TCP 连接:127.0.0.1:12345即可获取到响应的 HTTP 内容ok

第六步:关闭

socket_close($conn);
socket_close($socketFd);
Loading...