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

时间:2016-03-25 09:35:42

标签: php sockets

确定, 所以我知道我可能应该以某种方式将这个数据包转换成更好的形式,但我老实说不知道如何,并且找不到任何类型的易于理解的解释,基本上我使用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));

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

似乎您将一些十六进制编辑器内容复制粘贴到$data。实际上,您的数据重复。在每行的左侧,您有十六进制数据,右侧是这些值的ASCII解释。

到目前为止,$data中的内容是一个完全没有意义的字符串。

似乎你想逐字节发送(ff然后是50然后是3a ......),如果是这种情况你可以参考this question