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;
    }


  • 相关阅读:
    智慧城市开发模式研究
    区域经济、地理信息、互联网三者交叉之行业背景分析
    《矿产经济与管理》读书笔记
    郝寿义、安虎森《区域经济学》读书笔记
    京津冀区域货流预测与分析
    关于产业链招商的背景、内涵、特征和意义
    《政府与企业招商引资战略操作实务》读书笔记
    网站seo优化
    弹出窗口里有“确定”和“取消”两个按钮
    解决在网页里设置锚点后,链接不到相应位置
  • 原文地址:https://www.cnblogs.com/cyq632694540/p/13541098.html
Copyright © 2011-2022 走看看