为了接收UDP数据使用pid_recvfrom函数。 UDP接收缓冲区为2个,并如下工作。
※ 各产品UDP接收缓冲区的大小请参考附录Appendix。
提取pid_recvfrom函数,将读取保存在接收缓冲区的数据,清空缓冲区。
在读取缓冲区数据后,剩余的数据在清空缓冲区同时将丢失。
两个接收缓冲区中都有数据时,在接收缓冲区有空间之前,之后进来的数据将全部丢失。因此,建议一向确认接收缓冲区空间,建议编程为有数据时直接读取数据。
此例显示不断确认UDP接收数据,如有接收数据将输出数据。
$rbuf = "";
$pid = pid_open("/mmap/udp0"); // open UDP 0
pid_bind($pid, "", 1470); // binding
while(1) // infinite loop
{
$rxlen = pid_ioctl($pid, "get rxlen"); // get received data size
if($rxlen)
{
pid_recvfrom($pid, $rbuf, $rxlen); // receive data
echo "$rbuf\r\n"; // print received data
}
usleep(100000);
}
为了发送UDP数据,使用pid_sendto函数。
$sdata = "01234567";
$pid = pid_open("/mmap/udp0"); // open UDP 0
$slen = pid_sendto($pid, $sdata, 8, 0, "10.1.0.2", 1470); // send data
echo "slen = $slen\r\n"; // print size of send data
pid_close($pid);