socket_recv包丢失字节PHP

时间:2012-12-06 13:43:16

标签: php

我试图在PHP上接收数据包,但看起来像socket_recv会丢失一些字节。

我知道数据包已被确认:

0:13:58.951742 IP 192.168.0.101.1458 > 192.168.0.107.8000: Flags [P.], seq 1:7, ack 1, win 64240, length 6
    0x0000:  4500 002e 631d 4000 8006 158c c0a8 0065  E...c.@........e
    0x0010:  c0a8 006b 05b2 1f40 6557 d628 4e87 cadd  ...k...@eW.(N...
    0x0020:  5018 faf0 e808 0000 0068 6f6c 6100       P........hola.

并且发送的数据是:0000 0068 6f6c 6100

但是白衣:

socket_recv($socket, $buffer, 100, 0);
echo bin2hex($buffer); 
echo unpack("H*", $buffer);

即将开始使用echo:00686f6c6100

这意味着:

sended:  0000 0068 6f6c 6100
receive:   00   68 6f6c 6100

我做错了什么?

感谢。

编辑:我发现了问题。在代码上。 谢谢!

1 个答案:

答案 0 :(得分:0)

尝试:

  

echo sprintf(“%02x”,unpack(“H *”,$ buffer));

您可能必须首先将字节分成两部分。 IE我不确定0x0000是否被转换为0x0到0(两次)或0x0000到00。