淄博PHP_thinkphp 基于socket的基本通信功能实现和原理

 PHP与SEO   2018-06-28 15:35   144 人阅读  0 条评论

0.jpg

  1、前言

  Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

  这种介绍度娘很多,希望了解更多的自行百度,往下看的朋友记得先开启socket扩展;

  2、创建socke服务器端

  基本步骤:

  初始化86socket

  端口绑定

  端口进行监听

  调用accept阻塞

  等待客服端连接

  3、服务器端代码实现

  echo "****************server*****************\r\n";//设置 IP 和 端口(端口必须保证不被占用,且允许被外部访问)$ip = "127.0.0.1";
  $port = 1935;//超时设计set_time_limit(0);//创建socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("创建socket失败,原因为:{socket_strerror($socket)}\r\n");//绑定socket到指定ip和端口$ret = socket_bind($socket, $ip, $port) or die("绑定socket失败,原因为:{socket_strerror($ret)}\r\n");//监听socket,最大等会数为4$ret = socket_listen($socket, 4) or die("监听socket失败,原因为:{socket_strerror($ret)}\r\n");//计数$count = 0;
  echo "等待连接!!!\r\n";do {    //收到请求连接    //调用子socket处理信息
  $msgsock = socket_accept($socket);    if(!$msgsock){
  echo "socket阻塞失败,原因为:{socket_strerror($msgsock)}\r\n";
  }
  $msg = "<p style='color:red'>连接成功</p>";    //处理客服端输入并返回数据    socket_write($msgsock, $msg, strlen($msg));
  $buf = socket_read($msgsock, 8192);
  $talkback = "收到的信息为:{$buf}\r\n";
  echo $talkback;    if(++$count > 5) {        break;
  }
  socket_close($msgsock);
  } while(true);
  socket_close($socket);

  4、创建slient客户端

  基本步骤:

  使用TCP协议创建一个socket资源

  连接socket服务器

  socket_write 传输数据

  socket_read 接收数据

  关闭socket资源

  5、客户端代码实现

  echo '****************client*****************<br/>';//设置 IP 和 端口 $port = 1935;
  $ip = '127.0.0.1';//超时设计set_time_limit(0);//创建TCP协议的socket资源$socket  = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die('socket_create 失败:'.socket_strerror($socket));
  echo '创建成功<br/>';
  $restult = socket_connect($socket, $ip, $port);
  echo '连接成功<br/>';
  $in = '创建一个sokcet客服端成功,随机编号='.rand(1000,9999);if(socket_write($socket, $in, strlen($in))) {
  echo '发送成功,发送信息为'.$in.'<br/>';
  } else {
  echo '发送失败,原因为'.$socket_strerror($socket)。'<br/>';
  }while($out = socket_read($socket, 8192)) {
  echo '接收信息成功,信息为'.$out.'<br/>';
  }
  echo 'socket关闭<br/>';
  socket_close($socket);
  echo '关闭完成<br/>';

  6、开启客服端

  7、使用客户端连接服务端

  服务端状态:

  到这里socket的基本连接就差不多了。


张新全博客
本文地址:https://www.zxq2.com/seo/83.html
版权声明:本文为原创文章,版权归 张新全博客 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?