多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
socket_sendto ( resource $socket , string $buf , int $len , int $flags , string $addr [, int $port = 0 ] ) : int — 向套接字发送消息,无论是否已连接。通过套接字将buf的len个字节发送到地址addr的端口 **参数:** socket 套接字必须是先前由socket_create()创建的套接字资源。 buf 接收到的数据将被提取到buf指定的变量中。 len 从远程主机最多可以提取len个字节。 flags 标志的值可以是以下标志的任何组合,并与二进制OR(|)运算符结合在一起。 可用的`flags`值 | | | | --- | --- | | **`MSG_OOB`** | 发送OOB(带外)数据。 | | **`MSG_EOR`** | 表示记录标记。 发送的数据完成记录。 | | **`MSG_EOF`** | 关闭套接字的发送方,并在发送的数据末尾包含对此的适当通知。 发送的数据完成交易。 | | **`MSG_DONTROUTE`** | 绕过路由,使用直接接口。 | name 如果套接字的类型为AF_UNIX类型,则name是文件的路径。 否则,对于未连接的套接字,name是远程主机的IP地址,如果套接字是面向连接的,则为NULL。 port 此参数仅适用于AF_INET和AF_INET6套接字,并指定从其接收数据的远程端口。 如果套接字是面向连接的,则端口将为NULL >[danger]如果在UDP套接字上使用socket\_recvfrom并将其与MSG\_DONTWAIT标志结合使用,则如果没有要读取的内容,它将引发PHP警告。 AFAIK,除了用@抑制警告外,没有其他方法可以解决该警告(即,在调用socket\_recvfrom之前无法检查是否有数据) ``` $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); ```