我正在绑定通过一个用PHP创建的套接字将几条消息(动态创建的每条消息)写入设备。第一条消息总是通过;但是,后续消息不会通过。为了帮助我调试,如果此示例有问题,请告诉我:
$socket= socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $ip, $port);
socket_write($socket, "message 1'r");
socket_write($socket, "message 2'r");
您是否
尝试过将回车符添加到消息末尾的socket_write($socket, "message 1'r'n");
?在许多情况下,在使用缓冲区和流时,这似乎可以解决问题。
其他值得一试的事情:
//all suggestions rolled into one (including Chris' chr(0) - thanks for that one)
socket_write($socket, 'message 1'."'r'n".chr(0));
usleep(5);
socket_write($socket, 'Foobar'."'r'n".chr(0));
只要给一点额外的时间来清除缓冲区就可以创造奇迹。
编辑
刚刚又有一次脑电波:您是否也尝试过使用可选的长度参数?
socket_write($socket, 'message 1'."'r'n".chr(0),strlen('message 1'."'r'n".chr(0)));