专栏首页陶士涵的菜地[PHP] PHP请求Socket接口测试

[PHP] PHP请求Socket接口测试

使用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分召开电话会议,通报公司的财务和经营状况。";
    }
}

效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [javaSE] 网络编程(浏览器客户端-自定义服务端)

    获取PrintWriter对象,new出来,构造参数:OutputSream对象,true自动刷新

    陶士涵
  • [PHP] stream_set_blocking非阻塞模式影响fgets fread函数

    当设置socket为非阻塞时,fread或者fgets函数会立即返回结果,而不需要等待有输入,测试过程可以使用vscode的debug模式来进行 当不设置这一项...

    陶士涵
  • [PHP] 使用Socket提供Http服务

    https://github.com/taoshihan1991/simpleloader

    陶士涵
  • 活用控制反转 -- 一大波骚操作

    在我初学编程的时候,还没写过完整点的项目就看过了一些高阶概念。在没有实践时,这些概念的神奇和强大之处很难被完全体会的。而一旦自己在摸索中应用了,瞬间觉得打开了一...

    FairyEver
  • socket套接字是什么

    socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一...

    chenchenchen
  • 怒解Workerman之select IO复用(十)

    在第八章和第九章的案例中,哥用socket和fork等基础为为大家表演了如下一波儿:

    老李秀
  • nginx 微信小程序 wss ws 开发工具可以连接 socket 真机不行

    nginx 部署完成后 微信小程序 wss:// 访问,然后可以正常连接和数据的推拉

    onety码生
  • python 关于epoll的学习

          在linux中,默认情况下所有的socket都是blocking;当 用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶...

    py3study
  • 系统学习javaweb-05-网络编程

    csxiaoyao
  • Python实现局域网(Socket)通

    这学期课很多,加上学校就业办这边事情也不少,所以零散时间琢磨了很多天,开始想用进程的并发实现一个收,一个发,但ide无法实现同时print和input,所以暂时...

    py3study

扫码关注云+社区

领取腾讯云代金券