socket_sendto

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_sendto向套接字发送消息,无论它是否已连接

说明

socket_sendto(
    Socket $socket,
    string $data,
    int $length,
    int $flags,
    string $address,
    ?int $port = null
): int|false

函数 socket_sendto() 通过套接字 socketdata 中的 length 字节发送到地址 address 上的 port

参数

socket

使用 socket_create() 创建的 Socket 实例。

data

发送的数据将从缓冲区 data 中获取。

length

将发送 data 中的 length 字节。

flags

flags 的值可以是以下标志的任意组合,使用二进制或 (|) 运算符连接。

flags 的可能值
MSG_OOB 发送 OOB(带外)数据。
MSG_EOR 指示记录标记。发送的数据完成记录。
MSG_EOF 关闭套接字的发送方,并在发送数据的末尾包含相应的通知。发送的数据完成事务。
MSG_DONTROUTE 绕过路由,使用直接接口。

address

远程主机的 IP 地址。

port

port 是将数据发送到的远程端口号。

返回值

socket_sendto() 返回发送到远程主机的字节数,如果发生错误,则返回 false

变更日志

版本 说明
8.0.0 socket 现在是 Socket 实例;以前,它是一个 resource
8.0.0 port 现在可以为空。

范例

示例 #1 socket_sendto() 示例

<?php
$sock
= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

$msg = "Ping !";
$len = strlen($msg);

socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 1223);
socket_close($sock);
?>

参见

添加备注

用户贡献的备注 1 则备注

ole_DOT_omland_AT_gmail_DOT_com
18 年前
以下是您可以进行 UDP 广播的方法,在某些情况下很有用,并且似乎很难弄清楚如何实现。。

<?php
$sock
= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($sock, $broadcast_string, strlen($broadcast_string), 0, '255.255.255.255', $port);
?>
To Top