大家好,我用php开启了一个UDPserver 客户端向服务器发送数据。收到后返回一个小信息。
给大家看看基本的代码
[code="php"]
$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";
[/code]
fread 我设置的长度是100,我出现这样一个问题,客户端必须发满了100个字符才能读取完并返回。
如果一次没有够的话,得再发一个包才行。
客户端代码
[code="php"]
$fp = stream_socket_client("udp://10.193.250.241:7777", $errno, $errstr);
if (!$fp) {
die("ERROR: $errno - $errstr
");
}
$request = "my name";
stream_socket_sendto($fp, $request . "\n", 0);
stream_socket_sendto($fp, $request . "\n", 0);
[/code]
这样我内容才能读完。似乎也不够100字符。
总之,我就是想问一下怎么样读取一个不知道长度的udp包的内容呢。我想其他语言里的方法也差不多吧。
谢谢了!