对于Unix套接字,我们不需要使用socket_connect
。
这里是一个发送者和接收者一个非常简单的工作示例:
sender.php
<?php
$socket = socket_create(AF_UNIX, SOCK_DGRAM, 0);
socket_sendto($socket, "Hello World!", 12, 0, "/tmp/myserver.sock", 0);
echo "sent\n";
?>
receiver.php
<?php
$file = "/tmp/myserver.sock";
unlink($file);
$socket = socket_create(AF_UNIX, SOCK_DGRAM, 0);
if (socket_bind($socket, $file) === false) {
echo "bind failed";
}
if (socket_recvfrom($socket, $buf, 64 * 1024, 0, $source) === false) {
echo "recv_from failed";
}
echo "received: " . $buf . "\n";
?>
请注意,只有接收器需要绑定到一个地址(unix套接字文件),然后使用socket_recvfrom
。发件人只需致电socket_sendto
。
用哪个参数? – 2010-12-20 13:25:21
随着你想使用的协议的名称,我猜。在英语文档页面的评论是他们的列表:http://nl3.php.net/manual/en/function.getprotobyname.php – 2010-12-20 13:26:38
我试过“udp”,这是我想要的,但得到了[ 93]:不支持协议。 – 2010-12-20 13:31:15