下面的代碼發出一個UDP包,當我從我的Linux服務器上運行它時,我的網絡客戶端的地址是udp://192.168.1.107:2159。但是,當我使用代碼中顯示的地址Linux服務器地址從客戶端調用同一網頁時,將發出無UDP數據包。我用Chrome瀏覽器試用了一臺PC客戶端,並用Safari瀏覽器試用了一臺Mac客戶端。另外,phpinfo()顯示allow_url_fopen是「On」。另外,我也嘗試了沒有fflush()函數的代碼。爲什麼UDP數據包不能從客戶端網頁發送到服務器使用PHP fsockopen?
客戶端網頁和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);
}
謝謝,但我也嘗試過這個版本的呼叫,我沒有收到數據包。我不知道它是否是用於其他系統配置的PHP設置? –
這裏是我嘗試過的文本... [code] $ fsocket = fsockopen(「udp://192.168.1.108」,2195,$ errno,$ errstr,30); [/ code] –
不,它應該工作。請先在同一主機的第二個終端上安裝一個udp測試服務器,以確保沒有防火牆禁止訪問:'nc luv 2195'。然後在另一個終端上運行你的php腳本,使用'udp:// 127.0.0.1'和端口'2195'。它在我的電腦上工作,我沒有修改'php.ini'。檢查此:http://radarearth.com/content/using-netcat-udp-port-troubleshooting – hek2mgl