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() 通过套接字 socket 从参数 data 中发送 length 指定的字节数到 address 地址的 port 端口。

参数

socket

socket_create() 创建的 Socket 实例。

data

要从 data 缓冲区发送的数据。

length

data 中要发送的 length 长度的字节数。

flags

flags 的值可以是下列任意 flag 的组合。使用按位或运算符(|)来组合不同的 flag。

flags 可用值
MSG_OOB 发送 OOB(带外)数据。
MSG_EOR 逻辑记录标记。发送的数据结束一个逻辑记录。
MSG_EOF 从发送方关闭套接字,并在指定数据末尾设置结束标识。发送数据后结束事务。
MSG_DONTROUTE 绕过路由,直接使用接口。

address

远端 IP 地址。

port

port 是数据要被发送到的远端端口号。

返回值

socket_sendto() 返回发送到远端地址的字节数。发生错误时返回 false

更新日志

版本 说明
8.0.0 现在 socketSocket 实例, 之前是 resource
8.0.0 port 现在允许为 null。

范例

示例 #1 socket_sendto() 示例

<?php
    $sock 
socket_create(AF_INETSOCK_DGRAMSOL_UDP);

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

    
socket_sendto($sock$msg$len0'127.0.0.1'1223);
    
socket_close($sock);
?>

参见

add a note

User Contributed Notes 1 note

up
4
ole_DOT_omland_AT_gmail_DOT_com
17 years ago
Here's how you can make an udp broadcast, useful sometimes, and does seem hard to figure out hwo to do..

<?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