使用socket系列函数实现连接TCP服务
发布:smiling 来源: PHP粉丝网 添加日期:2022-06-01 09:05:51 浏览: 评论:0
首先需要先有一个 tcp 服务,我们使用 php中的 socket 系列函数实现。
- <?php
- //创建socket套接字
- $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
- //设置阻塞模式
- socket_set_block($socket);
- //为套接字绑定ip和端口
- socket_bind($socket,'127.0.0.1',3046);
- //监听socket
- socket_listen($socket,4);
- while(true)
- {
- //接收客户端请求
- if(($msgsocket = socket_accept($socket)) !== false)
- {
- //读取请求内容
- $buf = socket_read($msgsocket, 8192);
- echo "Received msg: $buf \n";
- $str = "this is a service message";
- //向连接的客户端发送数据
- socket_write($msgsocket, $str,strlen($str));
- //操作完之后需要关闭该连接否则 feof() 函数无法正确识别打开的句柄是否读取完成
- socket_close($msgsocket);
- }
- }
连接 tcp 服务:
使用 socket 系列函数连接
- <?php
- $st="socket send message";
- $length = strlen($st);
- //创建tcp套接字
- $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
- //连接tcp
- socket_connect($socket, '127.0.0.1',3046);
- //向打开的套集字写入数据(发送数据)
- $s = socket_write($socket, $st, $length);
- //从套接字中获取服务器发送来的数据
- $msg = socket_read($socket,8190);
- echo $msg;
- //关闭连接
- socket_close($socket);
使用 fsockopen 连接
- <?php
- //使用 fsockopen 打开tcp连接句柄
- $fp = fsockopen("tcp://127.0.0.1",3046);
- $msg = "fsockopen send message";
- //向句柄中写入数据
- fwrite($fp,$msg);
- $ret = "";
- //循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾
- while (!feof($fp)){
- stream_set_timeout($fp, 2);
- $ret .= fgets($fp, 128);
- }
- //关闭句柄
- fclose($fp);
- echo $ret;
使用 stream_socket_client 连接
- <?php
- //使用 stream_socket_client 打开 tcp 连接
- $fp = stream_socket_client("tcp://127.0.0.1:3046");
- $msg = "fsockopen send message";
- //向句柄中写入数据
- fwrite($fp,$msg);
- $ret = "";
- //循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾
- while (!feof($fp)){
- stream_set_timeout($fp, 2);
- $ret .= fgets($fp, 128);
- }
- //关闭句柄
- fclose($fp);
- echo $ret;
Tags: socket TCP服务
- 上一篇:PHP 跨域之header函数(代码示例)
- 下一篇:最后一页
相关文章
- ·php中curl、fsocket、file_get_content三个函数的使用比较(2020-12-10)
- ·PHP中的socket_read和socket_recv区别详解(2021-05-10)
- ·php中关于socket的系列函数总结(2021-05-27)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)