当前位置:首页 > PHP

php 实现socket通信

2026-02-15 13:53:32PHP

PHP 实现 Socket 通信

创建 Socket 服务器

使用 socket_create 函数创建一个 Socket 资源,指定协议族(如 AF_INET)、Socket 类型(如 SOCK_STREAM)和协议(如 SOL_TCP)。绑定 IP 地址和端口后,调用 socket_listen 开始监听连接请求。

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 8080);
socket_listen($socket);

接受客户端连接

通过 socket_accept 接受客户端连接,返回一个新的 Socket 资源用于与客户端通信。可以使用 socket_read 读取客户端发送的数据,socket_write 向客户端发送响应。

$clientSocket = socket_accept($socket);
$data = socket_read($clientSocket, 1024);
socket_write($clientSocket, "Hello Client!");

关闭 Socket 连接

通信完成后,使用 socket_close 关闭客户端和服务器的 Socket 连接,释放资源。

socket_close($clientSocket);
socket_close($socket);

创建 Socket 客户端

客户端通过 socket_create 创建 Socket 后,使用 socket_connect 连接到服务器。发送数据使用 socket_write,接收数据使用 socket_read

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, '127.0.0.1', 8080);
socket_write($socket, "Hello Server!");
$response = socket_read($socket, 1024);
socket_close($socket);

错误处理

检查每个 Socket 操作的返回值,使用 socket_last_errorsocket_strerror 获取错误信息,确保通信的稳定性。

if (socket_last_error()) {
    echo "Error: " . socket_strerror(socket_last_error());
}

完整示例代码

服务器端代码:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 8080);
socket_listen($socket);
$clientSocket = socket_accept($socket);
$data = socket_read($clientSocket, 1024);
echo "Received: $data\n";
socket_write($clientSocket, "Hello Client!");
socket_close($clientSocket);
socket_close($socket);

客户端代码:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, '127.0.0.1', 8080);
socket_write($socket, "Hello Server!");
$response = socket_read($socket, 1024);
echo "Response: $response\n";
socket_close($socket);

注意事项

  • 确保服务器和客户端的协议、IP 地址和端口一致。
  • 处理大容量数据时,循环读取和写入以避免数据截断。
  • 考虑使用多线程或非阻塞模式处理多个客户端连接。

通过以上步骤,可以实现基本的 Socket 通信功能,适用于简单的客户端-服务器交互场景。

php 实现socket通信

标签: 通信php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('lo…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ?…