TCP 伺服器套接字
套接字建立
建立一個使用 TCP 的套接字。它與建立客戶端套接字相同。
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
套接字繫結
將特定埠(引數 3)的給定網路(引數 2)的連線繫結到套接字。
第二個引數通常是 0.0.0.0
,它接受來自所有網路的連線。它也可以
socket_bind
錯誤的一個常見原因是指定的地址已經繫結到另一個程序 。通常會殺死其他程序(通常是手動以防止意外殺死關鍵程序),以便釋放套接字。
socket_bind($socket, "0.0.0.0", 6667) or onSocketFailure("Failed to bind to 0.0.0.0:6667");
將套接字設定為偵聽
使用 socket_listen
使套接字偵聽傳入的連線。第二個引數是允許在接受之前排隊的最大連線數。
socket_listen($socket, 5);
處理連線
TCP 伺服器實際上是處理子連線的伺服器。socket_accept
建立一個新的子連線。
$conn = socket_accept($socket);
來自 socket_accept
的連線的資料傳輸與 TCP 客戶端套接字的資料傳輸相同。
如果要關閉此連線,請直接致電 socket_close($conn);
。這不會影響原始 TCP 伺服器套接字。
關閉伺服器
另一方面,當不再使用伺服器時,應呼叫 socket_close($socket);
。這也將釋放 TCP 地址,允許其他程序繫結到該地址。