问题描述
大家好,我用php开启了一个UDPserver 客户端向服务器发送数据。收到后返回一个小信息。给大家看看基本的代码$pkt = stream_socket_recvfrom($socket, 100, 0, $peer);$reciv_data = fread($socket, 100);$message = preg_replace("/[[:space:]]/", '', $reciv_data); // cleanup data$response = "hello, $message";stream_socket_sendto($socket, $response, 0, $peer);echo " In > [$message] n";echo " Out > [$response] n";fread 我设置的长度是100,我出现这样一个问题,客户端必须发满了100个字符才能读取完并返回。如果一次没有够的话,得再发一个包才行。客户端代码$fp = stream_socket_client("udp://10.193.250.241:7777", $errno, $errstr);if (!$fp) { die("ERROR: $errno - $errstr<br />");} $request = "my name";stream_socket_sendto($fp, $request . "n", 0);stream_socket_sendto($fp, $request . "n", 0);这样我内容才能读完。似乎也不够100字符。总之,我就是想问一下怎么样读取一个不知道长度的udp包的内容呢。我想其他语言里的方法也差不多吧。谢谢了!
解决方案
这个偶也不是很清楚,我觉得你可以指定缓冲区大小的吧:)