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 地址,允許其他程序繫結到該地址。