Remmi
@Remmi

Причина проблемы UDP-соединения с сокетом в PHP-CLI (10045)?

Добрый день.
Имею PHP-скрипт, запущенный в режиме CLI и постоянно висящий в памяти.
Он создаёт сокет по адресу 127.0.0.1:2014 и ожидает данных по UDP

Код работает под Windows XP SP3, Windows Server 2003, Windows 7 x64
Однако на некоторых компьютерах работать отказывается.
Выдаёт следующую ошибку: "10045: Предпринятая операция не поддерживается для выбранного типа объекта."

Пробовал добавлять порт и php.exe в исключения брэндмауэра, пробовал отключать брэндмауэр. Антивирус и файервол отключены. Эффекта не даёт

Какие могут причины возникновения ошибки? И как с этим бороться?

$socketAddress = "127.0.0.1";
$socketPort = 2014;

// создаём экземпляр сокета для адреса IPv4, типа коммуникации DGRAM, протокола UDP
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

// подключаем сокет к определённому адресу на выбранный порт
$resSocketConnect = socket_bind($sock, $socketAddress, $socketPort);

if ($resSocketConnect) {
    $dataBuffer = '';
    $ipBuffer = '';
    $portBuffer = 0;
    // получаем данные из сокета
    $resRecvfrom = socket_recvfrom($sock, $dataBuffer, $socketMaxSize, MSG_WAITALL, $ipBuffer, $portBuffer);

    // если произошла ошибка при получении данных
    if (!$resRecvfrom) {
        var_dump(socket_last_error());
    }
}
  • Вопрос задан
  • 689 просмотров
Пригласить эксперта
Ответы на вопрос 2
alsopub
@alsopub
Похоже на ваш случай - online-studies.ru/kak-pereustanovit-protokol-tcp-i...
Ответ написан
Комментировать
https://msdn.microsoft.com/en-us/library/windows/d...

MSG_WAITALL не поддерживается на datagram-сокетах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы