Создание простого примера клиент / сервер UDP в PHP - PullRequest
2 голосов
/ 28 февраля 2011

Я пытаюсь создать простой пример клиентского сервера UDP на PHP, но я сталкиваюсь с ошибкой.

Это клиент:

$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 ]

3 голосов
/ 28 февраля 2011

Вот предупреждение на той же странице

Предупреждение Эта функция не должна использоваться с сокетами UDP-сервера.Вместо этого используйте stream_socket_recvfrom () и stream_socket_sendto ().

0 голосов
/ 05 сентября 2012

в соответствии с документацией : "вы не можете сделать шелковую курицу из уха свиньи"

stream_socket_connect предназначен для потоков, а не для пакетов дейтаграмм.recvfrom с большей вероятностью будет работать в этом сценарии.

...