php 实现 tcp
PHP 实现 TCP 通信
PHP 可以通过 socket 扩展实现 TCP 通信,包括创建 TCP 服务器和客户端。以下是具体实现方法。
创建 TCP 服务器
-
创建 Socket 并绑定端口
$host = '0.0.0.0'; $port = 8080; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($socket, $host, $port); socket_listen($socket); -
接受客户端连接
$client = socket_accept($socket); $message = "Welcome to TCP Server!\n"; socket_write($client, $message, strlen($message)); -
处理客户端数据
while (true) { $data = socket_read($client, 1024); if (trim($data) === 'exit') { break; } echo "Received: " . $data; socket_write($client, "Server: " . $data, strlen($data) + 8); } -
关闭连接
socket_close($client); socket_close($socket);
创建 TCP 客户端
-
连接服务器
$host = '127.0.0.1'; $port = 8080; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($socket, $host, $port); -
发送和接收数据
$message = "Hello Server!\n"; socket_write($socket, $message, strlen($message)); $response = socket_read($socket, 1024); echo "Server Response: " . $response; -
关闭连接
socket_close($socket);
注意事项
- 确保 PHP 已启用
socket扩展(检查php.ini中extension=sockets是否取消注释)。 - 服务器和客户端需在同一网络或配置正确的 IP 和端口。
- 多客户端处理需结合
socket_select或多进程/多线程实现。
示例代码整合
TCP 服务器完整示例
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 8080);
socket_listen($socket);
$client = socket_accept($socket);
socket_write($client, "Connected.\n", 11);
while (true) {
$data = socket_read($client, 1024);
if (trim($data) === 'exit') break;
echo "Client: " . $data;
socket_write($client, "Server: " . $data, strlen($data) + 8);
}
socket_close($client);
socket_close($socket);
TCP 客户端完整示例
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, '127.0.0.1', 8080);
$response = socket_read($socket, 1024);
echo $response;
socket_write($socket, "Hello Server!\n", 14);
$response = socket_read($socket, 1024);
echo $response;
socket_write($socket, "exit\n", 5);
socket_close($socket);
通过以上方法,可以实现基本的 TCP 通信功能。如需高并发或更复杂场景,建议结合事件循环库(如 libevent)或使用 Swoole 等高性能框架。







