您的位置:首页 > 编程语言 > PHP开发

socket(php)(短连接)(无循环,能接发一次,自动关闭)整理版本1

2017-08-13 09:25 169 查看
<?php
$host="192.168.1.57";			//Socket运行的服务器的IP地址
$port=8079;				//Socket运行的服务器的端口,端口取值为1到65535之间的数字,前提是这个端口未被使用
set_time_limit(0);			// 设置超时时间,这里设置为永不超时,确保PHP在等待客户端连接时不会超时。

//echo 1;	//能输出1
$socket = socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create socket\n");		// 创建一个Socket,返回一个Socket句柄,参数:哪个协议,套接字使用的类型,参数一下的具体协议(可以使用 getprotobyname() 函数进行读取)
$result = socket_bind($socket,$host,$port) ;		//绑定Socket到指定的地址和端口
$result = socket_listen($socket,3) ;			// 开始监听外部连接,第二个参数基本床3,4,5,也可以不传
/******到这里,服务器除了等待来自客户端的连接请求外基本上什么也不做******/

$spawn = socket_accept($socket) ;			// 接收连接,另一个Socket来处理服务端与客户端的通信
if(socket_getpeername($spawn , $host , $port))
{
echo "Client $host : $port is now connected to us.";
}
if($spawn){
echo '<br /n>';
$date = date("Y-m-d H:i:s D a");
echo $date;
echo '<br /n>';
}

//读取客户端的输入
$input=socket_read($spawn,1024) ;			// 读取客户端的输入,当一个连接被建立后,服务器就会等待客户端发送一些输入信息,这些信息可以由socket_read()函数来获得,并把它赋值给PHP的$input变量,socker_read的第二个参数用以指定读入的字节数,你可以通过它来限制从客户端获取数据的大小
socket_last_error();
//对接收到的信息进行处理,然后返回到客户端
$input=trim($input);					//返回字符串 $input,去除首尾空白字符后的结果。如果不指定第二个参数
//处理客户端输入并返回结果,当客户端发来数据信息后,信息输出就要靠socket_write()函数来完成
echo "laizikehuduande:" . $input;
echo '<br /n>';

$output="fangeikehuduande:\n" . strrev($input);		//反转字符串,这里仅仅是为了更好的区分两条信息
echo $output;
socket_write($spawn,$output,strlen($output));
socket_last_error();
echo '<br /n>';
// 关闭sockets
socket_close($spawn);
socket_close($socket);
printf("Closed the socket");
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: