当前位置:首页 > 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 连接,释放资源。

php 实现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 获取错误信息,确保通信的稳定性。

php 实现socket通信

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
分享给朋友:

相关文章

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php多态实现

php多态实现

PHP 多态的实现方法 多态是面向对象编程的三大特性之一,允许不同类的对象对同一消息做出响应。PHP 主要通过以下方式实现多态: 通过继承和方法重写 子类继承父类并重写父类方法,实现不同子类对同一方…

php实现回复功能

php实现回复功能

实现回复功能的基本步骤 在PHP中实现回复功能通常涉及数据库操作、表单处理和前后端交互。以下是实现回复功能的关键步骤: 数据库设计 创建包含回复数据的表结构,例如: CREATE TABLE re…

php实现视频直播

php实现视频直播

PHP 实现视频直播的基本方法 PHP 本身并不直接处理视频流,但可以作为后端支持视频直播系统的搭建。以下是几种常见的实现方式: 使用第三方流媒体服务 利用现成的流媒体平台(如 Wowza、Red5…

react组件之间是如何通信

react组件之间是如何通信

父子组件通信(Props) 父组件通过props向子组件传递数据或方法,子组件通过接收props实现数据或行为的更新。父组件定义props,子组件通过this.props(类组件)或直接解构(函数组件…

react实现父子通信

react实现父子通信

父组件向子组件传递数据(Props) 父组件通过props将数据传递给子组件。子组件通过props接收父组件传递的数据。 父组件示例: import ChildComponent from './…