[PHP] PHP请求Socket接口测试
2023-02-18 15:47:42 时间
使用php读取socket接口的数据,通过php传递请求方法和请求参数,得到返回结果
PHP文件:
<?php class Test{ const IP='127.0.0.1'; const port=10003; public static function main(){ header("Content-type:text/html;Charset=UTF-8"); $socket=new Test(); $result=$socket->connSocket("getmaillist\r\n{'id':2}\r\n"); echo $result; } private function connSocket($str){ $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); $res=@socket_connect($socket,self::IP,self::port); if(!$res){ return; } socket_write($socket,$str); $result=""; while($data = socket_read($socket,1024)){ $result.=$data; } socket_close($socket); return $result; } } Test::main();
Java的Socket服务端:
import java.io.InputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Test { public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(10003); while (true) { Socket socket = serverSocket.accept(); InputStream is = socket.getInputStream(); byte[] b = new byte[1024]; int len = is.read(b); String inputString = new String(b, 0, len); PrintWriter pw=new PrintWriter(socket.getOutputStream(),true); String result=""; //处理发来的数据 if(inputString.contains("\r\n")){ String[] params=inputString.split("\r\n"); if(params[0].equals("getmaillist")){ String maillist=getmaillist(); result="请求方法:"+params[0]+",请求参数:"+params[1]+",请求结果:"+maillist; }else{ result="非法参数2"; } }else{ result="非法参数1"; } pw.println(result); socket.close(); } } public static String getmaillist(){ return "中国上海/2015年7月28日——服务于中国及全球华人社群的领先在线媒体公司新浪公司(Nasdaq GS: SINA)定于美国当地时间2016年8月8日周一股市收盘后公布截至2016年6月30日的2016第二季度未经审计的财务报告。随后,新浪管理团队将于美国东部时间晚10点10分召开电话会议,通报公司的财务和经营状况。"; } }
效果:
相关文章
- MySQL(1) - 用户管理及root密码修改
- Jmeter系列(40)- 详解 Jmeter 图形化 HTML 压测报告
- Jmeter系列(39)- 详解 Jmeter CLI 模式
- Jmeter系列(38)- Jmeter 分布式测试
- Jmeter系列(37)- 跨平台运行 Jmeter,CSV 文件路径设置
- Jenkins操作手册 - 巨详细,一篇足矣!
- 【JVM实战系列】「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康
- 【Spring专题】「开发指南」夯实实战基础功底之解读logback-spring.xml文件的详解实现
- 精华推荐 |【深入浅出Sentinel原理及实战】「原理探索专题」完整剖析Alibaba微服务架构体系之轻量级高可用流量控制组件Sentinel(1)
- 【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机制
- 精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
- 深度剖析 | 【JVM深层系列】[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」
- 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
- 【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析
- 【秒杀购物商城业务服务】「分布式架构服务」盘点中间件服务的高可用模式及集群技术的方案分析
- 作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析
- 【分布式技术专题】「架构设计方案」盘点和总结秒杀服务的功能设计及注意事项技术体系
- Kafka技术专题之「性能调优篇」消息队列服务端出现内存溢出OOM以及相关性能调优实战分析
- 深入浅出学习透析Nginx服务器的基本原理和配置指南「初级实践篇 」
- 深入浅出学习透析 Nginx 服务器的基本原理和配置指南「运维操作实战篇」