php socket代码详解
时间: 2023-09-05 20:11:36 浏览: 141
以下是一个简单的PHP Socket代码示例,包括了创建Socket、绑定端口、监听连接请求、接受连接、发送和接收数据等基本操作。代码注释详细解释了每个步骤的含义和作用。
```php
<?php
// 创建Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
exit;
}
// 绑定端口
$address = '127.0.0.1';
$port = 12345;
$result = socket_bind($socket, $address, $port);
if ($result === false) {
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
exit;
}
// 监听连接请求
$result = socket_listen($socket, 5);
if ($result === false) {
echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
exit;
}
echo "Server started on $address:$port\n";
// 接受连接
while (true) {
$clientSocket = socket_accept($socket);
if ($clientSocket === false) {
echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
break;
}
echo "Client connected\n";
// 发送数据
$message = "Hello, client!";
socket_write($clientSocket, $message, strlen($message));
// 接收数据
$buffer = '';
while (($len = socket_recv($clientSocket, $buf, 2048, MSG_WAITALL)) !== false) {
$buffer .= $buf;
if ($len < 2048) {
break;
}
}
echo "Received data: $buffer\n";
// 关闭连接
socket_close($clientSocket);
}
// 关闭Socket
socket_close($socket);
```
在这个例子中,我们首先使用socket_create函数创建了一个Socket,然后使用socket_bind函数将其绑定到指定的IP地址和端口号。接着,使用socket_listen函数开始监听连接请求,最后使用socket_accept函数接受连接。当有客户端连接时,我们发送了一条欢迎信息,并使用socket_recv函数接收客户端发送的数据。当客户端断开连接时,我们使用socket_close函数关闭连接。最后,使用socket_close函数关闭Socket。
这只是一个简单的例子,实际上,Socket编程可以实现非常复杂的网络应用程序。在实际应用中,我们需要根据具体需求进行定制化开发。
阅读全文