zoukankan      html  css  js  c++  java
  • socket原理

    客户端:
    <?php
    header("Content-type: text/html; charset=utf-8");
    /**
    * File name:client.php
    * 客户端代码
    *
    * @author guisu.huang
    * @since 2012-04-11
    */
    set_time_limit(0);

    $host = "192.168.1.106";
    $port = 2048;

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die("Could not create socket "); // 创建一个Socket
    $connection = socket_connect($socket, $host, $port) or die("Could not connet server "); // 连接
    $str = $_POST["con"];
    $str = iconv("UTF-8","GB2312",$str);
    //$str = "hello";
    socket_write($socket, $str) or die("Write failed "); // 数据传送 向服务器发送消息
    while ($buff = @socket_read($socket, 1024, PHP_NORMAL_READ)) {
    //echo "Response was:" . $buff . " ";
    echo $buff;
    }
    socket_close($socket);




    服务端:
    <?php
    /**
    * File name server.php
    * 服务器端代码
    *
    * @author guisu.huang
    * @since 2012-04-11
    *
    */

    //确保在连接客户端时不会超时
    set_time_limit(0);
    //设置IP和端口号
    $address = "192.168.1.108";
    $port = 2048; //调试的时候,可以多换端口来测试程序!
    /**
    * 创建一个SOCKET
    * AF_INET=是ipv4 如果用ipv6,则参数为 AF_INET6
    * SOCK_STREAM为socket的tcp类型,如果是UDP则使用SOCK_DGRAM
    */
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    //阻塞模式
    socket_set_block($sock) or die("socket_set_block() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    //绑定到socket端口
    $result = socket_bind($sock, $address, $port) or die("socket_bind() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    //开始监听
    $result = socket_listen($sock, 4) or die("socket_listen() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    echo "OK Binding the socket on $address:$port ... ";
    echo "OK Now ready to accept connections. Listening on the socket ... ";
    do { // never stop the daemon
    //它接收连接请求并调用一个子连接Socket来处理客户端和服务器间的信息
    $msgsock = socket_accept($sock) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n");

    //读取客户端数据
    echo "Read client data: ";
    //socket_read函数会一直读取客户端数据,直到遇见 , 或者字符.PHP脚本把这写字符看做是输入的结束符.

    $buf = socket_read($msgsock, 8192);
    echo "Received msg: $buf ";

    //数据传送 向客户端写入返回结果
    $msg ="欢迎访问服务器".rand(1,10)." ";
    //$msg = iconv("UTF-8","GB2312",$msg);
    socket_write($msgsock, $msg, strlen($msg)) or die("socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n");
    //一旦输出被返回到客户端,父/子socket都应通过socket_close($msgsock)函数来终止
    socket_close($msgsock);
    } while (true);
    socket_close($sock);



  • 相关阅读:
    easyui改变tab标题
    java获取request中的参数、java解析URL问号后的参数
    java生成word文档
    jquery即时获取上传文件input file文件名
    微信公众号开发(三)
    Linux中文乱码 更改Linux字符集
    微信公众号开发(五)
    NSCache
    MIT神技术绘制用户界面至任意物体
    导弹工厂到摩托车间:制造业如何应用大数据
  • 原文地址:https://www.cnblogs.com/yongjiapei/p/5834599.html
Copyright © 2011-2022 走看看