当我从Linux服务器运行UDP数据包时,下面的代码会发送一个udp数据包,地址是我的web客户端udp://192.168.1.107:2159。但是,当我使用代码中显示的地址Linux服务器地址从客户端调用相同的网页时,不会发出UDP数据包。我尝试了一个带有chrome的PC客户端和一个带有Safari的Mac客户机。此外,phpinfo()显示allow_url_fopen是"On“。此外,我也尝试了没有fflush()函数的代码。
客户端网页和PHP套接字是否有限制?我没看到这个搜索网。顺便说一下,我在同一台客户机上编写了一个Java应用程序,它将UDP数据包发送到地址和端口,没有问题。
phpinfo();
$errno = 0;
$errstr = "";
$fsocket = fsockopen("udp://192.168.1.103:2195", $errno, $errstr);
if( !$fsocket ) {
echo "$errstr( $errno)<br/>\n";
} else {
$out = "Oh ya baby!\r\n";
fwrite( $fsocket, $out );
fflush( $fsocket );
fclose($fsocket);
}发布于 2014-01-28 18:46:06
端口是的第二个参数到fsockopen()。它需要被传递,与域名隔离。如下所示:
$fsocket = fsockopen("udp://192.168.1.103", 2195, $errno, $errstr);发布于 2014-02-05 03:03:28
这个问题..。你不能总是相信Wireshark!我太信任Wireshark了。我创建了一个Java应用程序,用于从基于Web的packet数据包传输接收。很低,瞧,Java抓到了数据包,Wireshark每次都错过了这个包。失败的Wireshark案例是Mac (客户端PHP调用)、Linux (Wireshark会话和PHP服务器)。
我不知道Wireshark是否将数据包标记为其他东西,还是在PHP生成的包中有一些模糊的东西,比如Wireshark?奇怪的是,当我从Java应用程序传输相同的数据包时,Wireshark会捕获它!我不知道为什么。但是我有来工作,所以我的工作完成了!它在Linux和Mac 10之间以客户机和服务器的所有组合工作,太棒了!
https://stackoverflow.com/questions/21414099
复制相似问题