2017-06-20 14 views
0

我已經使用PHP編寫了一些代碼來創建套接字並偵聽傳入連接。我正在嘗試使用我感興趣的特定端口來執行此操作。用於在特定端口上創建監聽套接字的PHP代碼(運行於計算引擎中)

除非在一些隨機端口上打開偵聽TCP套接字,而不是由我選擇的端口,否則一切都很順利。

我在Google Compute Engine(GCE)上運行此代碼。

這裏是確切的PHP代碼,我嘗試:

set_time_limit(0); 
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
    socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1); 
    $address = '35.190.179.17'; 
    //bind socket to specified host 
    socket_bind($socket, $address,54468); 
    //listen to port 
    socket_listen($socket); 
+0

當您打開偵聽套接字時,該偵聽套接字位於特定端口上。當有人連接時,他們的連接被轉移/委託給其他一些端口,以便監聽套接字可以繼續偵聽新的連接。將收聽套接字想象成一個操作員 - 它必須保持線路暢通,以獲得更多連接。 –

+0

我甚至無法使用指定的端口通過telnet連接,我實際上使用netstat -l找到了打開的端口並使用telnet連接到該端口。 –

+0

您應該嘗試向php.net中的示例添加錯誤檢查代碼。你可能會發現任何一個socket_x命令都會失敗。 http://php.net/socket_set_option –

回答

0

我通過使用內部IP而不是外部IP地址和打開的端口用於外部連接解決了這個問題。

計算引擎不允許使用外部IP地址進行套接字綁定。

相關問題