无法弄清楚如何使用socket_write在PHP中将此数据包正确发送到服务器


Cant figure out how to correctly send this packet to server in PHP using socket_write

好的,所以我知道我可能应该以某种方式将这个数据包转换成更好的形式,但老实说,我不知道如何转换,也找不到任何易于理解的解释,基本上我是使用socket_connect连接的,这一切都很好。我使用了一个数据包嗅探器来模拟我试图发送的数据包,基本上只是复制并粘贴它。当它到达socket_read时,这个代码基本上会冻结,因为服务器没有注册我发送的数据,所以它不会发回任何数据。我想我应该在某个地方使用PHP函数"pack()",但文档对我来说毫无意义,我只是在这一点上迷失了方向。

这是我的代码:

// this is the packet I want to send
$data =
'ff 50 3a 00 00 00 00 00  36 38 58 49 50 58 32 44 .P:..... 68XIPX2D
0c 00 00 00 53 55 6e 65  55 b4 4a c9 88 ff ff ff ....SUne U.J.....
09 04 00 00 09 04 00 00  55 53 41 00 55 6e 69 74 ........ USA.Unit
65 64 20 53 74 61 74 65  73 00                   ed State s.';
// i try writing it to the server, and it doesn't throw any error for me so seems to send it fine
socket_write($socket, $data, strlen($data));
// then the server says nothing back, so it seems to just sit idle at this part
print(socket_read($socket, 2048));

非常感谢您的帮助,谢谢!

您似乎将一些十六进制编辑器内容复制粘贴到了$data中。事实上,你有一个重复的数据。每行的左边都有十六进制的数据,右边有这些值的ASCII解释。

到目前为止,$data中的字符串完全没有数据包的意义。

似乎你想一个字节一个字节地发送(ff,然后50,然后3a…),如果是这样的话,你可以参考这个问题。