【发布时间】:2010-11-15 06:48:46
【问题描述】:
我正在尝试连接到游戏服务器以获取服务器的状态。查看与 Wireshark 的连接应该可以。不幸的是,当我使用 fsockopen() 时,文本被问号和未知字符弄乱了。在某些地方,文本还可以,所以我知道我正在连接并获取一些数据。
我下一步应该怎么做才能让它发挥作用?我在想可能是一个缓冲区或类似的东西,但它实际上只是我收到的一个数据包。
PHP 代码:
<?php
//$fp = fsockopen("udp://173.199.102.29", 3074, $errno, $errstr);
$fp = fsockopen("udp://209.247.83.157", 3074, $errno, $errstr);
if (!$fp) {
echo "ERROR: $errno - $errstr<br />\n";
} else {
fwrite($fp, "\xff\xff\xff\xff\x00 playerlist\x00");
stream_set_timeout($fp, 4);
stream_set_blocking($fp, 1);
$s="";
do {
$read = fread($fp,1024);
//$s .= $read;
$s .= $read;
$info = stream_get_meta_data($fp);
}
while (!$info["timed_out"]);
echo $s;
fclose($fp);
}
?>
结果:
-ÿÿÿÿ ����������������������������������������������������������������������������������������������������������������������������������������� á������������������������������������������������������������˜Ÿw´à�†w3†w׬«I��� á�‡w����������������˜Ÿw��˜wtà�‹���å�ÝŸwÜà�Š–��������Øà�ª–�á�Ø>«�à/ã–�[ã�ûÿÿÿlã�@+–�����@(Œ@(ŒÌ+–�n���/$–��������Ì+–�?‹w����Ø>«�à/Ð/x,wã�������������Ë¢���������������������ä����[ã�ûÿÿÿ���@�������«æ�����?����������������������������"B��ÿÿ��µ…_�#�\pæ�+��������uží?�����:¯÷¿���������€���Ð��������Àñ}šw™”Ÿwòßšw¨”Ÿw㨫I*���*���û������+���S���+���+����¸¸�¸�������Tä�¤ä�'·)w#�����Tä�+���˜`«(ˆ`«(°ç�k��¸)w¦(šw¬ä�ÿÿ��+���S�ž+�ý~+���������������������������Àä�ãb,w#�����´ä�+���������ÀñÀ�����������������������������€@���������øÿÿÿ›À��������������������������������������������������������������������������������������������������������€¿�������������������������������56227��������k]D’°ã��g•�ã�Ë¢�����ìã�@(Œ@���%WÇS(Œ,���@(ŒB���%WÇG(Œ8���@(ŒÌã�@g•�@(Œ@���Ë¢�����ìã�����ôi�@(Œ@���Ë¢�ìã�FP_�Ë¢�F���N���Ø���ç���£Û�����¾\’úS^�
我应该收到的数据包内容(来自 Wireshark):
.....M.ML. .U\protocol\1044\clients\15\sv_maxclients\18\pure\1\hc\1\hw\2\mod\0\voice\1\pb\1\bots\0\licensetype\2\wager\0\geolocation\SEA\playlist\10......M.ML. .U.....M.ML. .U\protocol\1044\clients\15\sv_maxclients\18\pure\1\hc\1\hw\2\mod\0\voice\1\pb\1\bots\0\licensetype\2\wager\0\geolocation\SEA\playlist\10
【问题讨论】:
-
服务器是否使用 ISO-8859-1 7 位 ASCII 码?
-
我尝试在几个不同的之间进行转换。我真的不确定,我从不改变它。
-
不管输入应该是ascii
标签: php sockets character-encoding