在PHP中创建简单的客户端/服务器UDP示例

时间:2011-02-28 09:29:51

标签: php sockets networking udp client-server

我正在尝试在PHP中创建一个简单的UDP客户端服务器示例,但我遇到了错误。

这是客户:

$fp = stream_socket_client("udp://192.168.0.12:12478", $errno, $errstr);

if ($fp)
{
        fwrite($fp, "TEST 1 TEST 2 TEST 3");
        $buf = fgets($fp);
        var_dump($buf);
        fclose($fp);
}

这是服务器:

$socket = stream_socket_server("udp://192.168.0.12:12478", $errno, $errstr, STREAM_SERVER_BIND);
if ($socket)
{
  while ($conn = stream_socket_accept($socket)) {
    fwrite($conn, date("D M j H:i:s Y\r\n"));
    fclose($conn);
  }
  fclose($socket);
}

所有执行结束于:

Warning: stream_socket_accept(): accept failed: Operation not supported 

基本上,这是所有PHP文档中给出的示例,但我无法弄清楚它有什么问题。非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:3)

这是同一页上的警告

  

警告
  此功能不应与UDP服务器套接字一起使用。代替,   使用stream_socket_recvfrom()和   stream_socket_sendto()。

答案 1 :(得分:0)

根据documentation:“你不能用母猪的耳朵做丝绸”“

stream_socket_connect适用于STREAMS,而非数据报包。 recvfrom更有可能在这种情况下工作。