socket_sendmsg
发送消息
此函数适用于 PHP 7.0.0 及以上版本。
socket_sendmsg 函数用于通过一个 socket 发送一个消息到指定的目标。它是一个低级别的操作,通常用于需要直接操作网络消息的场景。此函数相比于传统的 socket_send 函数,提供了更灵活的消息发送选项,支持发送更加复杂的数据结构。
socket_sendmsg(resource $socket, array $message [, int $flags = 0 ]) : int
成功时,返回发送的字节数。失败时,返回 FALSE,并且可以通过 socket_last_error() 获取详细的错误信息。
以下是一个使用 socket_sendmsg 函数的示例:
<?php
// 创建一个 UDP socket
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($socket === false) {
echo "无法创建 socket: " . socket_strerror(socket_last_error());
exit();
}
// 设置目标信息
$message = [
'data' => 'Hello, World!',
'address' => '127.0.0.1',
'port' => 12345
];
// 发送消息
$bytes_sent = socket_sendmsg($socket, $message);
if ($bytes_sent === false) {
echo "发送消息失败: " . socket_strerror(socket_last_error($socket));
} else {
echo "成功发送 $bytes_sent 字节消息!";
}
// 关闭 socket
socket_close($socket);
?>
此示例展示了如何使用 socket_sendmsg 函数通过 UDP 协议发送一条消息。首先,创建一个 UDP socket,然后设置一个包含消息内容、目标地址和端口的数组。接着,调用 socket_sendmsg 函数发送消息。最后,通过 socket_last_error 函数检查是否有错误发生,并关闭 socket 连接。