Last active
August 29, 2015 14:00
-
-
Save suyan/11245590 to your computer and use it in GitHub Desktop.
php socket
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| // server | |
| $Server = D('Server'); | |
| set_time_limit(0); | |
| $host = C('DAEMON_HOST'); | |
| $port = C('DAEMON_PORT'); | |
| // 创建一个tcp流 | |
| $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) | |
| or die("socket_create() failed:" . socket_strerror(socket_last_error())); | |
| // 设置阻塞模式 | |
| socket_set_block($socket) | |
| or die("socket_set_block() failed:" . socket_strerror(socket_last_error())); | |
| // 绑定到端口 | |
| socket_bind($socket, $host, $port) | |
| or die("socket_bind() failed:" . socket_strerror(socket_last_error())); | |
| // 开始监听 | |
| socket_listen($socket, 4) | |
| or die("socket_listen() failed:" . socket_strerror(socket_last_error())); | |
| echo "Binding the socket on $host:$port ... \n"; | |
| while (true) { | |
| // 接收连接请求并调用一个子连接Socket来处理客户端和服务器间的信息 | |
| if (($msgsock = socket_accept($socket)) < 0) { | |
| echo "socket_accept() failed:" . socket_strerror(socket_last_error()); | |
| }else{ | |
| // 读数据,确保来到的数据是json格式 | |
| $request = socket_read($msgsock,8192); | |
| // 处理请求 | |
| $response = $Server->handleRequest($request); | |
| socket_write($msgsock, $response, strlen($response)); | |
| } | |
| // 结束通信 | |
| socket_close($msgsock); | |
| } | |
| socket_close($socket); | |
| // client | |
| set_time_limit(0); | |
| $host = C('DAEMON_HOST'); | |
| $port = C('DAEMON_PORT'); | |
| // 创建一个tcp流 | |
| $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) | |
| or die("socket_create() failed:" . socket_strerror(socket_last_error())); | |
| echo "try to connect to $host:$port...\n"; | |
| $result = socket_connect($socket, $host, $port) | |
| or die("socket_connect() failed:" . socket_strerror(socket_last_error())); | |
| $request = json_encode(array( | |
| 'method'=>'analyzeServer', | |
| 'params' => array( | |
| 'id' => 24, | |
| ) | |
| )); | |
| if(!socket_write($socket, $request, strlen($request))) { | |
| echo "socket_write() failed:" . socket_strerror($socket); | |
| }else { | |
| echo "发送成功!\n"; | |
| } | |
| $response = socket_read($socket, 8192); | |
| var_dump(json_decode($response,true)); | |
| socket_close($socket); | |
| ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment