отправлять и получать данные из udpsocket

1

Я работаю над средством просмотра списка серверов, и кто-то сказал мне, что я должен использовать UdpSocket для отправки данных на главный сервер и получения от него данных (в данном случае для игры MW2-IW4)

Итак, это команда или сокет, который вы используете

"\xff\xff\xff\getservers IW4 <MASTERSERVERPORTHERE> full empty\x00"

поэтому я попытался работать с этим кодом

<?php  
  $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    $msg = "\xff\xff\xff\getservers IW4 <MASTERSERVERPORT> full empty\x00";
    $len = strlen($msg);

    socket_sendto($sock, $msg, $len, 0, 'MASTERSERVERIP' , 1223);
    socket_close($sock);
?>

но не получал никаких данных, просто получая номер 36... PS:

i don't know much things about sockets.
Теги:
sockets

2 ответа

1

я выяснил, как это сделать некоторое время назад, и вспомнил этот пост, если кто-то еще заинтересован, вот как вы это делаете:

<?php
$ip = "127.0.0.1";
$port = 1337;
$socket = fsockopen('udp://'.$ip, $port);
stream_set_blocking($socket, 0);
stream_set_timeout($socket, 1); //1 = timeout

fwrite($socket, "YOUR UDP COMMAND HERE\n");

$time=time()+1; //1=timeout
$returned = "";
while($time > time()) {
    $returned .= fgets($socket);
}


echo($returned); // the returned value
@fclose($socket); //we are done, so better close it.
?>
0

Просто используйте fsockopen это намного проще,

$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);

if (!$fp) echo "ERROR: $errno - $errstr<br />\n";

fwrite($fp, "\n");
while (!feof($fp)) {
    echo fgets($fp, 128);
}
fclose($fp);
  • 1
    Привет! Я плохо понимаю ваш код ... Прежде всего, куда мне поместить команду, которую я хочу отправить? во-вторых, что такое $ errno и $ errstr ..? Спасибо
  • 1
    $ errno и $ errstr имеют дело с ошибками и т. д., вы можете поместить то, что вы хотите написать, в функцию "fwrite", php.net/manual/en/function.fsockopen.php

Ещё вопросы

Сообщество Overcoder
Наверх
Меню