php socket创建tcp服务端
php socket创建tcp服务端. 快速入门,不处理异常状态.
简单实例
通过三步,1.创建socket 2.绑定端口 3. 监听
# 创建ipv4 tcp stream类型的socket
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
# 绑定 8001 端口
socket_bind($socket, '0.0.0.0',8001);
# 开始监听
socket_listen($socket,2);
sleep(20);
验证成功.
详解:
1. socket_create函数,创建socket
socket_create(
int $domain, //网络协议,AF_INET:IPv4,AF_INET6:IPv6,AF_UNIX:UNIX本地通讯
int $type, // socket类型,SOCK_STREAM:流(tcp),....
int $protocol,// 具体网络协议,SOL_TCP:tcp,SOL_UDP:udp等.可以通过getprotobyname("tcp")获得
):Socket|false
- socket_bind函数,绑定socket
socket_bind(
Socket $socket, // 通过 socket_create()创建的socket
string $address, // 地址,AF_INET的ip地址.AF_UNIX的文件路径
int $port = 0,// AF_INET的端口
):bool;
- socket_listen: 监听
socket_listen(
Socket $socket, // socket_create() 创建的socket
int $backlog = 0,// backlog 队列数
): bool
backlog最大值2,超过2就不处理了
等待客户端
阻塞获取信息
$client=socket_accept($socket);
获取数据
$ret=socket_read($client,1024);
echo "Req:".$ret;
发送数据
socket_write($client,"ok");
关闭连接
socket_close($client);
socket_close($socket);
完整代码
<?php
declare(strict_types=1);
// 创建socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 绑定端口文件
socket_bind($socket, '127.0.0.1',8001);
// 监听
socket_listen($socket,2);
// 获取连接
$client=socket_accept($socket);
socket_getpeername($client,$clientAddress,$clientPort);
echo "client:${clientAddress}:${clientPort}";
// 获取数据
$ret=socket_read($client,1024);
echo "Req:".$ret.PHP_EOL;
//发送数据
socket_write($client,"ok");
// 关闭
socket_close($client);
socket_close($socket);
原作者:阿金
本文地址:https://hi-arkin.com/archives/socket-tcp.html