[英]send and get data from udpsocket
我正在使用服務器列表查看器,有人告訴我應該使用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.
不久前,我想出了如何做的事情,並想起了這篇文章,如果仍然有人感興趣,這就是您的做法:
<?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.
?>
只需使用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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.