服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - PHP实现Socket服务器的代码

PHP实现Socket服务器的代码

2019-10-27 11:54php代码网 PHP教程

PHP实现Socket服务器的代码

  1. <?php  
  2. ob_implicit_flush();  
  3. set_time_limit(0);  
  4.  
  5. $address = "192.40.7.93";//换成你自己的地址  
  6. $port = 10000;  
  7.  
  8. if(($socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) == false)  
  9.  echo "错误(socket_create):".socket_strerror(socket_last_error())."<br />";  
  10.  
  11. if(socket_bind($socket,$address,$port) == false)  
  12.  echo "错误(socket_bind):".socket_strerror(socket_last_error())."<br />";  
  13.  
  14. if(socket_listen($socket) == false)  
  15.  echo "错误(socket_listen):".socket_strerror(socket_last_error())."<br />";  
  16.  
  17. /*  
  18. After the socket socket has been created using socket_create() and bound to a name with socket_bind(),   
  19. it may be told to listen for incoming connections on socket.   
  20. */  
  21.  
  22. while(true){  
  23.  if(($msgSocket = socket_accept($socket)) == false){  
  24.   echo "错误(socket_accept):".socket_strerror(socket_last_error())."<br />";  
  25.   break;  
  26.  }  
  27.  
  28.  /*  
  29.  this function will accept incoming connections on that socket.   
  30.  Once a successful connection is made, a new socket resource is returned, which may be used for communication.   
  31.  If there are multiple connections queued on the socket, the first will be used.   
  32.  If there are no pending connections, socket_accept() will block until a connection becomes present.   
  33.  If socket has been made non-blocking using socket_set_blocking() or socket_set_nonblock(), FALSE will be returned.   
  34.  */  
  35.  
  36.  $msg = "Welcome!<br />";  
  37.  //socket_write($msg,$msg,strlen($msg));  
  38.  $command = "";  
  39.  
  40.  while(true){  
  41.   if(($buf = socket_read($msgSocket,2048,PHP_BINARY_READ)) == false){  
  42.    echo "错误(socket_read):".socket_strerror(socket_last_error())."<br />";  
  43.    break 2;  
  44.   }  
  45.  
  46.   /*  
  47.   The function socket_read() reads from the socket resource socket created by the socket_create() or socket_accept() functions.   
  48.   The maximum number of bytes read is specified by the length parameter.   
  49.   Otherwise you can use \r, \n, or \0 to end reading (depending on the type parameter, see below).     
  50.   */  
  51.  
  52.   /*  
  53.   if(!$buf = trim($buf))  
  54.    continue; // ????  
  55.  
  56.   if($buf == "quit")  
  57.    break;  
  58.  
  59.   if($buf == "shutdown"){  
  60.    socket_close($msgSocket);  
  61.    break 2;  
  62.   }  
  63.  
  64.   $tallBack = "You say:$buf\n";  
  65.   socket_write($msgSocket,$tallBack,strlen($tallBack));  
  66.   */  
  67.  
  68.   if(ord($buf) != 13)  
  69.    $command .= $buf;  
  70.   else{  
  71.    $command1 = "You Say:$command\r\n";  
  72.    socket_write($msgSocket,$command1,strlen($command1));  
  73.    echo "User typed:".$command."<br />";  
  74.    $command = "";  
  75.   }  
  76.  }  
  77.  socket_close($msgSocket);  
  78. }  
  79.  
  80. socket_close($socket);  
  81. ?> 

然后打开CMD,输入:telnet192.40.7.9310000,自己体验去吧!

PHP实现Socket服务器的代码

注,要把:php_sockets.dll 打开

延伸 · 阅读

精彩推荐
  • PHP教程tp5实现微信小程序多图片上传到服务器功能

    tp5实现微信小程序多图片上传到服务器功能

    这最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端。下面脚本之家小编给大家带来了tp5实现微信小程序多图片上传到服务...

    JspFnta4342019-09-19
  • PHP教程PHPUnit测试私有属性和方法功能示例

    PHPUnit测试私有属性和方法功能示例

    这篇文章主要介绍了PHPUnit测试私有属性和方法功能,结合实例形式较为详细的分析了使用PHPUnit针对私有属性和方法进行测试的相关操作技巧与注意事项,需要...

    哎!无悔1462019-09-25
  • PHP教程PHP实现分布式memcache设置web集群session同步的方法

    PHP实现分布式memcache设置web集群session同步的方法

    这篇文章主要介绍了PHP实现分布式memcache设置web集群session同步的方法,结合实例形式分析了php设置与使用memcache实现web集群session同步的相关操作技巧与注意事...

    爱代码也爱生活1332019-10-12
  • PHP教程常用的php开发工具有哪些?

    常用的php开发工具有哪些?

    由于最近小编要自学php,所以整理了一些常用的 php开发工具 ,给大家分享一下: 常用的php开发工具有哪些? EditPlus EditPlus是一套功能强大,可取代记事本...

    百度经验3042019-06-03
  • PHP教程PHP模型Model类封装数据库操作示例

    PHP模型Model类封装数据库操作示例

    这篇文章主要介绍了PHP模型Model类封装数据库操作,结合实例形式分析了php使用mysqli封装的针对数据库操作相关实现与使用技巧,需要的朋友可以参考下...

    小菜鸟有大梦想2422019-06-01
  • PHP教程php中文字符截取防乱码

    php中文字符截取防乱码

    当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空...

    php教程网3362019-10-27
  • PHP教程PHP yield关键字功能与用法分析

    PHP yield关键字功能与用法分析

    这篇文章主要介绍了PHP yield关键字功能与用法,结合实例形式分析了php5.5新增的yield关键字功能与相关使用技巧,需要的朋友可以参考下...

    LCRxxoo1612019-07-07
  • PHP教程laravel5使用freetds连接sql server的方法

    laravel5使用freetds连接sql server的方法

    这篇文章主要给大家介绍了关于laravel5使用freetds连接sql server的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    羊爸爸2922019-07-22