php实现udp通信
PHP实现UDP通信的方法
创建UDP服务器端
使用stream_socket_server函数创建UDP服务器:

$server = stream_socket_server("udp://0.0.0.0:9999", $errno, $errstr, STREAM_SERVER_BIND);
if (!$server) {
die("Error: $errstr ($errno)");
}
while (true) {
$data = stream_socket_recvfrom($server, 1024, 0, $peer);
echo "Received: $data from $peer\n";
stream_socket_sendto($server, "Server received: $data", 0, $peer);
}
创建UDP客户端
使用stream_socket_client函数创建UDP客户端:

$client = stream_socket_client("udp://127.0.0.1:9999", $errno, $errstr);
if (!$client) {
die("Error: $errstr ($errno)");
}
stream_socket_sendto($client, "Hello UDP Server", 0);
$response = stream_socket_recvfrom($client, 1024, 0, $peer);
echo "Response: $response from $peer\n";
使用socket扩展实现
创建UDP服务器:
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '0.0.0.0', 9999);
while (true) {
socket_recvfrom($socket, $buf, 1024, 0, $ip, $port);
echo "Received $buf from $ip:$port\n";
socket_sendto($socket, "ACK: $buf", strlen("ACK: $buf"), 0, $ip, $port);
}
创建UDP客户端:
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$msg = "Hello UDP Server";
$len = strlen($msg);
socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 9999);
socket_recvfrom($sock, $buf, 1024, 0, $server, $port);
echo "Received $buf from $server:$port\n";
注意事项
UDP是无连接的协议,不需要建立连接即可发送数据 UDP不保证数据包的顺序和可靠性 适合对实时性要求高但允许少量丢包的应用场景 最大传输单元(MTU)通常限制在1500字节左右






