PHP实现Socket服务器的代码

yipeiwu_com6年前服务器
<?php
ob_implicit_flush();
set_time_limit(0);

$address = "192.40.7.93";//换成你自己的地址
$port = 10000;

if(($socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) == false)
 echo "错误(socket_create):".socket_strerror(socket_last_error())."<br />";

if(socket_bind($socket,$address,$port) == false)
 echo "错误(socket_bind):".socket_strerror(socket_last_error())."<br />";

if(socket_listen($socket) == false)
 echo "错误(socket_listen):".socket_strerror(socket_last_error())."<br />";

/*
After the socket socket has been created using socket_create() and bound to a name with socket_bind(), 
it may be told to listen for incoming connections on socket. 
*/

while(true){
 if(($msgSocket = socket_accept($socket)) == false){
  echo "错误(socket_accept):".socket_strerror(socket_last_error())."<br />";
  break;
 }

 /*
 this function will accept incoming connections on that socket. 
 Once a successful connection is made, a new socket resource is returned, which may be used for communication. 
 If there are multiple connections queued on the socket, the first will be used. 
 If there are no pending connections, socket_accept() will block until a connection becomes present. 
 If socket has been made non-blocking using socket_set_blocking() or socket_set_nonblock(), FALSE will be returned. 
 */

 $msg = "Welcome!<br />";
 //socket_write($msg,$msg,strlen($msg));
 $command = "";

 while(true){
  if(($buf = socket_read($msgSocket,2048,PHP_BINARY_READ)) == false){
   echo "错误(socket_read):".socket_strerror(socket_last_error())."<br />";
   break 2;
  }

  /*
  The function socket_read() reads from the socket resource socket created by the socket_create() or socket_accept() functions. 
  The maximum number of bytes read is specified by the length parameter. 
  Otherwise you can use \r, \n, or \0 to end reading (depending on the type parameter, see below).   
  */

  /*
  if(!$buf = trim($buf))
   continue; // ????

  if($buf == "quit")
   break;

  if($buf == "shutdown"){
   socket_close($msgSocket);
   break 2;
  }

  $tallBack = "You say:$buf\n";
  socket_write($msgSocket,$tallBack,strlen($tallBack));
  */

  if(ord($buf) != 13)
   $command .= $buf;
  else{
   $command1 = "You Say:$command\r\n";
   socket_write($msgSocket,$command1,strlen($command1));
   echo "User typed:".$command."<br />";
   $command = "";
  }
 }
 socket_close($msgSocket);
}

socket_close($socket);
?>

 

然后打开CMD,输入:telnet 192.40.7.93 10000,自己体验去吧!

注,要把:php_sockets.dll 打开

相关文章

使用Python创建简单的HTTP服务器的方法步骤

如果需要一个简单的Web Server,而不是安装那些复杂的HTTP服务程序,比如:Apache,Nginx等。那么可以使用Python自带的包完成一个简单的内建 HTTP 服务器。于是...

Python实现获取域名所用服务器的真实IP

本来是要写个程序用的,没写完不写了,这一部分就贴出来吧 验证域名和IP class JianKong(): '''查询IDC信息,封ip和过白名单''' def __init...

python3.8 微信发送服务器监控报警消息代码实现

python3.8 微信发送服务器监控报警消息代码实现

这篇文章主要介绍了python3.8 微信发送服务器监控报警消息代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python版...

无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)

windows下的解决方法:通过查找php.ini的session.save_path = ""的路径,检查是否存在这个目录或这个目录是否有everyone或Authenticated...

Python实现向服务器请求压缩数据及解压缩数据的方法示例

本文实例讲述了Python实现向服务器请求压缩数据及解压缩数据的方法。分享给大家供大家参考,具体如下: 向服务器请求压缩数据格式,并解压缩数据 #!/usr/bin/env pyth...