引言

PHP Socket编程基础

1. 开启Socket功能

在PHP中,要使用Socket编程,首先需要在php.ini配置文件中开启Socket功能。搜索并取消注释extension=sockets

2. 创建Socket

使用socket_create()函数创建一个Socket。该函数需要三个参数:协议族、套接字类型和协议。

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

3. 绑定Socket

使用socket_bind()函数将Socket绑定到指定IP地址和端口。

socket_bind($socket, "127.0.0.1", 8080);

4. 监听连接

使用socket_listen()函数监听Socket上的连接请求。

socket_listen($socket);

5. 接受连接

使用socket_accept()函数接受客户端的连接请求。

$connection = socket_accept($socket);

6. 读取数据

使用socket_read()函数读取客户端发送的数据。

$data = socket_read($connection, 1024);

7. 发送数据

使用socket_write()函数发送数据到客户端。

socket_write($connection, "Hello, client!");

8. 关闭连接

使用socket_close()函数关闭连接。

socket_close($connection);

图片传输与处理

1. 图片传输

// 服务器端
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, "127.0.0.1", 8080);
socket_listen($socket);

$connection = socket_accept($socket);
$filename = "example.jpg";
$file = fopen($filename, "rb");
while (!feof($file)) {
    $data = fread($file, 1024);
    socket_write($connection, $data);
}
fclose($file);
socket_close($connection);

// 客户端
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, "127.0.0.1", 8080);
$filename = "received.jpg";
$file = fopen($filename, "wb");
while (!feof($socket)) {
    $data = socket_read($socket, 1024);
    fwrite($file, $data);
}
fclose($file);
socket_close($socket);

2. 图片处理

// 读取图片
$image = imagecreatefromjpeg("received.jpg");

// 获取图片尺寸
$width = imagesx($image);
$height = imagesy($image);

// 缩放图片
$scale = 0.5;
$new_width = $width * $scale;
$new_height = $height * $scale;
$ resized_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// 保存图片
imagejpeg($resized_image, "resized.jpg");

// 释放内存
imagedestroy($image);
imagedestroy($resized_image);

总结