服务器之家

服务器之家 > 正文

PHP实现Socket服务器的代码

时间:2019-10-27 11:54     来源/作者:php代码网
  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 打开

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部