• php socket 测试


    参考:

    https://www.jianshu.com/p/00357c8cd22d

    server.php

     <?php
     $ser = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr) or die("created server failed!");
     while(1) {
       $conn = stream_socket_accept($ser);
       if (pcntl_fork() == 0) {
         while(1) {
          $request = fread($conn, 1024);
         // do something
         $response = "hello, world!" . $request;
        fwrite($conn, $response);
     
         }
             //fclose($conn);
         //exit(0);
     
       }
    

      之前,旧的版本

    <?php
    $ser = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr) or die("created server failed!");
    while(1) {
      $conn = stream_socket_accept($ser);
      if (pcntl_fork() == 0) {
        $request = fread($conn, 1024);
        // do something
        $response = "hello, world!" . $request;
        fwrite($conn, $response);
        fclose($conn);
        exit(0);
        
      } 
    } 
                                                                                                         
    

      旧的版本,可以用客户端 telnet 来进行测试,用下面的client.php来测试,可以多次发送输入的信息到服务端,来交互。

     

     

    client.php

    <?php
    
     $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
     //socket_connect($socket,'127.0.0.1',6666);
     //socket_connect($socket,'124.156.165.37',6666);
     socket_connect($socket,'192.168.123.41',8000);
    while(1) {
     echo "input:---";
     $line = fread(STDIN, 1024);
     echo $line;
     //$msg = "hlllo server123
    ";
     socket_write($socket,$line);
     $res = socket_read($socket,2048);
     echo $res;
    
    
    }
    

      

     

    ----------------------------------------------------------------

    php的三种CLI常量:STDIN,STDOUT,STDERR

     

      PHP CLI(command line interface)中,有三个系统常量,分别是STDIN、STDOUT、STDERR,代表文件句柄。

    应用一:

    <?php
    while($line = fopen('php://stdin','r')){
        echo fgets($line);
    }
    ?>

    应用二:

    <?php
        echo STDIN;
    ?>

    在dos命令行下直接返回STDIN文件指针(文件句柄)。如图:

    应用三:

    <?php
        echo fgets(STDIN);
    ?>

    STDIN可以拿到在dos下输入的内容,fgets读取这个STDIN文件句柄,即可打印出刚才输入的内容。如图:

  • 相关阅读:
    K210识别水果模型
    一键开关机短路
    Arudino IDE添加STM32官方管理器stm32duino / Arduino_Core_STM32
    ESP32 Ble
    Blynk软件配置及Mixly编程教程
    Laravel安装及配置,完成基础的demo
    electron下载/打包慢?解决办法.....
    ESP32+PHP+MYSQL 搭建自己的物联网平台Demo
    PCA9536读写测试之MicroPython
    MSF实验2
  • 原文地址:https://www.cnblogs.com/oxspirt/p/12842583.html
Copyright © 2020-2023  润新知