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 连接。