3

我想通过用 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");
4

1 回答 1

3

您是否尝试在消息末尾添加回车符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)));
于 2012-05-11T21:26:22.487 回答