我需要維護一些我用PHP打開的套接字,並定期檢查這些套接字。我是PHP中的套接字新手;我打開這樣的插座:如何判斷socket是否在PHP中打開?
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $ip, $port);
一些套接字可以進入一個狀態,他們不返回消息;這些插座只接收消息。 如何知道套接字是否被打開?如果套接字不響應消息?
我需要維護一些我用PHP打開的套接字,並定期檢查這些套接字。我是PHP中的套接字新手;我打開這樣的插座:如何判斷socket是否在PHP中打開?
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $ip, $port);
一些套接字可以進入一個狀態,他們不返回消息;這些插座只接收消息。 如何知道套接字是否被打開?如果套接字不響應消息?
socket_sendto - 將消息發送到一個插座,無論是連接或不
好像你可以使用socket_sendto和一些「平」的數據發送到遠程主機,然後測試返回值來確定套接字是否仍然建立。
你能弄明白嗎? –
如何從套接字中讀取非阻塞嘗試?這應該返回空白或假,取決於它是否連接。也會產生警告我認爲但可以禁用。 – transilvlad
這是更好地使用功能:的fsockopen()
閱讀:http://www.php.net/manual/en/function.fsockopen.php
,或者你可以嘗試使用的功能:socket_create_listen()
閱讀:http://www.php.net/manual/en/function.socket-create-listen.php
(這個只是實驗性的)。
並定期檢查你可能它使用簡單的cron。
您應該區分例如「打開」的插座,例如OS爲這些描述符和與另一個套接字「連接」的套接字(例如遠程主機上的服務器套接字)分配資源。在這種情況下,問題應該是關於「......如果套接字連接打開......」在我看來。 – excanoe