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

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 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 打开

延伸 · 阅读

精彩推荐