Create a socket that uses the TCP. It is the same as creating a client socket.
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
Bind connections from a given network (parameter 2) for a specific port (parameter 3) to the socket.
The second parameter is usually "0.0.0.0"
, which accepts connection from all networks. It can also
One common cause of errors from socket_bind
is that the address specified is already bound to another process. Other processes are usually killed (usually manually to prevent accidentally killing critical processes) so that the sockets would be freed.
socket_bind($socket, "0.0.0.0", 6667) or onSocketFailure("Failed to bind to 0.0.0.0:6667");
Make the socket listen to incoming connections using socket_listen
. The second parameter is the maximum number of connections to allow queuing before they are accepted.
socket_listen($socket, 5);
A TCP server is actually a server that handles child connections. socket_accept
creates a new child connection.
$conn = socket_accept($socket);
Data transferring for a connection from socket_accept
is the same as that for a TCP client socket.
When this connection should be closed, call socket_close($conn);
directly. This will not affect the original TCP server socket.
On the other hand, socket_close($socket);
should be called when the server is no longer used. This will free the TCP address as well, allowing other processes to bind to the address.