当前位置: 首页 > 后端技术 > PHP

PHP实现的服务端socket

时间:2023-03-30 05:42:44 PHP

实现了相关函数:socket_create、socket_set_block、socket_bind、socket_listen、socket_accept、socket_read、socket_write。这些函数的具体参数在PHP文档中有详细说明,这里不再赘述。这里只是介绍服务客户端如何处理请求。//保证连接客户端不会超时set_time_limit(0);//设置IP和端口号$address="127.0.0.1";$port=54321;$socketServer=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)ordie("socket_create()fail:".socket_strerror(socket_last_error())."/n");//设置为阻塞模式socket_set_block($socketServer)ordie("socket_set_block()fail:".socket_strerror(socket_last_error())."/n");//绑定端口$result=socket_bind($socketServer,$address,$port)ordie("socket_bind()fail:".socket_strerror(socket_last_error())."/n");//开始监听$result=socket_listen($socketServer,4)ordie("socket_listen()fail:".socket_strerror(socket_last_error())."/n");do{//接收连接请求,返回一个subSocket来处理client和server之间的信息$sock=socket_accept($socketServer)ordie("socket_accept()failed:reason:".socket_strerror(socket_last_error())."/n");while($sock){//读取客户端数据echo"读取客户端数据n";$length=socket_read($sock,4);$length=unpack('i',$length);回声“长度:$长度[1]n";$request=socket_read($sock,$length[1]);echo"$request:$requestn";//数据传输将返回结果写入客户端$msg="thisisresponsemessagen";$msgLength=strlen($msg);$msgLength=pack('i',$msgLength);socket_write($sock,$msgLength);socket_write($sock,$msg,strlen($msg))或死("socket_write()failed:reason:".socket_strerror(socket_last_error())."/n");break;}}while(true);socket_close($socketServer);收到客户端的请求后,可以结合PHP多线程处理,这里只是一个简单的返回字符串,总结一下各大语言中socket通信的方式都是类似的,服务端的处理也是类似的。在现有的高性能socket通信的情况下framework,建议不要自己去实现,但是你得了解framework底层是怎么实现的,以上内容希望对大家有所帮助,很多PHPer总会遇到进阶时的一些问题和瓶颈。他们写了太多的业务代码,没有方向感。我不知道从哪里开始。开始改进,整理了一些PHP进阶、架构视频资料和大厂PHP面试PDF|免费获取可以关注公众号:PHP开源社区