p; print("Couldn''t read from socket: " . socket_strerror(socket_last_error()) . "\n"); break 2; } if(!@socket_write($accept, "ECHO: $line")){ print(date(''Y-m-d H:i:s'') . " STATUS: Connection interrupted\n"); break; } print(date(''Y-m-d H:i:s'') . " READ: $line"); ob_flush(); } socket_close($accept); } ?>
bool socket_bind(resource socket, string address, integer port) 这个socket_bind()把一个socket资源绑定在一个地址上。这个socket必须由socket_create()函数返回的一个资源。这个地址必须是一个IP地址或者是一个保存Unix socket的路径。如果是运行在Internet上的socket,你还必须提供一个端口。 socket_clear_error(resource socket) 这个函数能够清除制定socket的错误,如果没有指定参数,那么将清除所有socket的错误。 socket_close(resource socket) socket_close函数关闭一个socket并且清除该socket所占用的内存资源。 boolean socket_connect(resource socket, string address, integer port) 这个函数创建一个客户端到一个端口或者socket的连接。你必须提供一个由socket_create产生的socket。这个address参数必须到一个socket的路径或者是一个IP地址。如果是后者,还必须跟一个数字的端口号。 下面例子演示了使用UDP协议的连接到游戏服务器然后获取信息的过程。 socket_connect <?php //create UDP socket if(($socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) < 0){ print("Couldn''t create socket: " . socket_strerror(socket_last_error()) . "\n"); } //timeout after 5 seconds socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array(''sec''=>5,''usec''=>0)); //connect to the RtCW master server if(!socket_connect($socket, ''wolfmaster.idsoftware.com'', 27950)){ print("Couldn''t connect: " . socket_strerror(socket_last_error()) . "\n"); } &nb |