zoukankan      html  css  js  c++  java
  • php socket

    #TCP示例

     

    //服务端
    <?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 "$buf ";
    $str = '{"code":200}';
    //向连接的客户端发送数据
    socket_write($msgsocket, $str,strlen($str));
    //操作完之后需要关闭该连接否则 feof() 函数无法正确识别打开的句柄是否读取完成
    socket_close($msgsocket);
    }
    }



    //客户端
    <?php
    $st = "send something";
    echo $st." ";
    //创建tcp套接字
    $i=1;
    while(true){
    echo $i." ";
    $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    $length = strlen($st);
    //连接tcp
    socket_connect($socket, '127.0.0.1',3046);
    //向打开的套集字写入数据(发送数据)
    $s = socket_write($socket, $st, $length);
    //从套接字中获取服务器发送来的数据
    $msg = socket_read($socket,8190);
    //关闭连接
    sleep(1);
    socket_close($socket);
    $i++;
    }


    #UPD示例



    //服务端
    private function udpServer(){
    //服务器信息
    $server = 'udp://127.0.0.1:9998';
    //消息结束符号
    $msg_eof = " ";
    $socket = stream_socket_server($server, $errno, $errstr, STREAM_SERVER_BIND);
    if (!$socket) {
    die("$errstr ($errno)");
    }

    do {
    //接收客户端发来的信息
    $inMsg = stream_socket_recvfrom($socket, 1024, 0, $peer);
    //服务端打印出相关信息
    echo "Client : $peer ";
    echo "Receive : {$inMsg}";
    //给客户端发送信息
    $outMsg = substr($inMsg, 0, (strrpos($inMsg, $msg_eof))).' -- '.date("D M j H:i:s Y ");
    stream_socket_sendto($socket, $outMsg, 0, $peer);

    } while ($inMsg !== false);
    }

    //客户端
    private function udpClient(){
    $udpGet = function ($sendMsg = '', $ip = '127.0.0.1', $port = '9998'){
    $handle = stream_socket_client("udp://{$ip}:{$port}", $errno, $errstr);
    if( !$handle ){
    die("ERROR: {$errno} - {$errstr} ");
    }
    fwrite($handle, $sendMsg." ");
    $result = fread($handle, 1024);
    fclose($handle);
    return $result;
    };

    $result = $udpGet('Hello World');
    echo $result;
    }


  • 相关阅读:
    利用selenroid扩展uiautoamtor的webview解析能力
    设备offline时如何自动重置
    Docker集群管理portainer的使用
    Dockerfile编写的注意事项
    @RequestMapping注解学习
    美团面试总结
    排序算法总结
    java实现二分法查找
    设计模式之---单例模式
    http请求状态码解析
  • 原文地址:https://www.cnblogs.com/cyq632694540/p/13541098.html
Copyright © 2011-2022 走看看