程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> [PHP] PHP請求Socket接口測試,phpsocket

[PHP] PHP請求Socket接口測試,phpsocket

編輯:關於PHP編程

[PHP] PHP請求Socket接口測試,phpsocket


使用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分召開電話會議,通報公司的財務和經營狀況。";
    }
}

效果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved