服务端
<?php
header("Content-Type: text/html; charset=utf-8");set_time_limit(0);
$host="localhost";
$port=3005;
//创建一个连接
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("cannot create socket\n");
//绑定socket到端口
$result=socket_bind($socket,$host,$port) or die("cannot bind port to socket\n");
//开始监听这个端口
$result=socket_listen($socket,4) or die("could not set up socket listen\n");
//接受连接,另一个socket来处理通信
socket_set_block($socket);
do
{
$msgsock=socket_accept($socket) or die("cannot accept incoming connection\n");
//读取客户端发送过来的信息
$input=socket_read($msgsock,10240) or die("cannot read input\n");
echo '收到信息:'.$input.'\r\n';
$output = Date("Y-m-d H:i:s").strrev($input).':--->反转';
//对接收到的信息进行处理,然后返回到客户端
socket_write($msgsock,$output,strlen($output)) or die("cannot write");
//关闭socket连接
socket_close($msgsock);
usleep(10000);
}while(true);
socket_close($socket);
?>
// 客户端 实现类似这样
<?php
//header("Connection: Keep-Alive");
//header("Proxy-Connection: Keep-Alive");
header("Content-Type: text/html; charset=utf-8");
set_time_limit(0);
$host="localhost";
$port=3005;
//创建一次 实现多次通信
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("cannot create socket\n");
$conn=socket_connect($socket,$host,$port) or die("cannot connect server\n");
// 模拟多个连接
for($i=1;$i<=1000;$i++)
{
//创建一个socket
//socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>5, 'usec'=>500000));
//socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR,100);
socket_set_option($socket, SOL_SOCKET, SO_KEEPALIVE, 10);
//if($conn){echo "client connect ok!";}
socket_write($socket,"hello world! i am yzw_$i client_".$i) or die("cannot write data\n");
$buffer=socket_read($socket,1024,PHP_BINARY_READ);
if($buffer)
{
echo "response was:".$buffer."\n";
}
//socket_shutdown($socket,2);
//flush();
usleep(1000);
}
socket_close($socket);
?>