• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

简单的php socket 客户端/服务器端编程

PHP 水墨上仙 3012次浏览 0个评论

简单的php socket 客户端/服务器端编程

客户端代码

<?php
 error_reporting(E_ALL);
 set_time_limit(0);
 echo "<h2>TCP/IP Connection</h2>\n";
 
 $port = 1935;
 $ip = "127.0.0.1";
 
 /*
  +-------------------------------
  *    @socket连接整个过程
  +-------------------------------
  *    @socket_create
  *    @socket_connect
  *    @socket_write
  *    @socket_read
  *    @socket_close
  +--------------------------------
  */
 
 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
 if ($socket < 0) {
     echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
 }else {
     echo "OK.\n";
 }
 
 echo "试图连接 '$ip' 端口 '$port'...\n";
 $result = socket_connect($socket, $ip, $port);
 if ($result < 0) {
     echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
 }else {
     echo "连接OK\n";
 }
 
 $in = "Ho\r\n";
 $in .= "first blood\r\n";
 $out = '';
 
 if(!socket_write($socket, $in, strlen($in))) {
     echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
 }else {
     echo "发送到服务器信息成功!\n";
     echo "发送的内容为:<font color='red'>$in</font> <br>";
 }
 
 while($out = socket_read($socket, 8192)) {
     echo "接收服务器回传信息成功!\n";
     echo "接受的内容为:",$out;
 }
 
 
 echo "关闭SOCKET...\n";
 socket_close($socket);
 echo "关闭OK\n";
 ?>

服务端代码

<?php
 //确保在连接客户端时不会超时
 set_time_limit(0);
 
 $ip = '127.0.0.1';
 $port = 1935;
 
 /*
  +-------------------------------
  *    @socket通信整个过程
  +-------------------------------
  *    @socket_create
  *    @socket_bind
  *    @socket_listen
  *    @socket_accept
  *    @socket_read
  *    @socket_write
  *    @socket_close
  +--------------------------------
  */
 
 /*----------------    以下操作都是手册上的    -------------------*/
 if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
     echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";
 }
 
 if(($ret = socket_bind($sock,$ip,$port)) < 0) {
     echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";
 }
 
 if(($ret = socket_listen($sock,4)) < 0) {
     echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";
 }
 
 $count = 0;
 
 do {
     if (($msgsock = socket_accept($sock)) < 0) {
         echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
         echo "等待连接。。。。";
         break;
     } else {
         
         //发到客户端
         $msg ="测试成功!\n";
         socket_write($msgsock, $msg, strlen($msg));
         
         echo "测试成功了啊\n";
         $buf = socket_read($msgsock,8192);
         
         
         $talkback = "收到的信息:$buf\n";
         echo $talkback;
         
         if(++$count >= 5){
             break;
         };
         
     
     }
     //echo $buf;
     socket_close($msgsock);
 
 } while (true);
 
 socket_close($sock);
 ?>


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明简单的php socket 客户端/服务器端编程
喜欢 (0)

您必须 登录 才能发表评论!

加载中……