zoukankan      html  css  js  c++  java
  • 关于php的socket

    这里仅记录tcp协议:

    关于server:

    <?php
    /**
     * 测试关于php的socket函数
     */
    /**
     * 最基本的socket,服务器端:
     * 创建
     * $sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
     * 绑定
     * socket_bind($sock,'127.0.0.1');
     * 监听
     * socket_listen($sock,5);
     * 得到连接
     * $msgSock = socket_accept($sock);
     * socket_write();
     * socket_read();
    */
    $address = '127.0.0.1';
    $port = 12345;
    if(($sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')))===false)
    {
        echo "socket create failed ".socket_strerror(socket_last_error())."
    ";
    }
    //绑定
    if(socket_bind($sock,$address,$port) === false)
    {
        echo 'socket bind failed '.socket_strerror(socket_last_error())."
    ";
    }
    //监听
    if(socket_listen($sock,10) === false)
    {
        echo 'socket listen failed '.socket_strerror(socket_last_error())."
    ";
    }
    do
    {
        $msgSock = socket_accept($sock);
        if($msgSock === false)
        {
            echo 'socket accept failed '.socket_strerror(socket_last_error())."
    ";
            break;
        }
        //发送到客户端
        $msg = "server连接成功了!
    ";
        socket_write($msgSock,$msg,strlen($msg));
        //读从客户端接收的数据
        $reciveMsg = socket_read($msgSock,8192);
        echo "reciveed msg is: ".$reciveMsg."
    ";
        socket_close($msgSock);
    }while(true);
    
    socket_close($sock);

    关于client:

    <?php
    /**
     * 关于客户端的socket
     */
    /**
     * 函数
     * socket_create();
     * socket_connect();
     * socket_write();
     * socket_read();
     */
    $address = '127.0.0.1';
    $port = 12345;
    $sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    if($sock === false)
    {
        echo "socket create failed ".socket_strerror(socket_last_error())."
    ";
    }
    echo "attempt to connect server...
    ";
    $result = socket_connect($sock,$address,$port);
    if($result === false)
    {
        echo "socket connect failed ".socket_strerror(socket_last_error())."
    ";
    }
    echo 'connect to server ..'."
    ";
    $msg = "client connect success
    ";
    socket_write($sock,$msg,strlen($msg));
    while($out = socket_read($sock,8192))
    {
        echo $out."
    ";
    }
    echo "close socket ..
    ";
    socket_close($sock);

    php的socket还有一种套接字流,都是stream打头的函数,其中也有server和client,这里不记录

  • 相关阅读:
    阻止a链接跳转的点击事件
    appium python版api
    Appium—python_ 安卓手机划屏幕操作
    appium-unittest框架中的断言
    Appium 服务关键字
    python mysql入库的时候字符转义
    python实现两个字典合并
    解决linux登录后总是时间过会就断开(解决ssh登录后闲置时间过长而断开连接)
    linux安装好redis,如何在window端访问?
    linux上安装redis
  • 原文地址:https://www.cnblogs.com/phpzhou/p/5518291.html
Copyright © 2011-2022 走看看