PHP实现Socket服务器的代码


Posted in PHP onApril 03, 2008

<?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实现Socket服务器的代码
注,要把:php_sockets.dll 打开

PHP 相关文章推荐
php MsSql server时遇到的中文编码问题
Jun 11 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
php禁止某ip或ip地址段访问的方法
Feb 25 PHP
浅谈json_encode用法
Mar 05 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
Sep 01 PHP
PHP实现统计所有字符在字符串中出现次数的方法
Oct 17 PHP
关于laravel后台模板laravel-admin select框的使用详解
Oct 03 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 PHP
mysql+php分页类(已测)
Mar 31 #PHP
PHP 数字左侧自动补0
Mar 31 #PHP
加强版phplib的DB类
Mar 31 #PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 #PHP
PHP5中的时间相差8小时的解决办法
Mar 28 #PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 #PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 #PHP
You might like
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
详细解读Python中解析XML数据的方法
2015/10/15 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python 多维List创建的问题小结
2019/01/18 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
如何使用repr调试python程序
2020/02/28 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
自荐信范文
2013/12/10 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
团日活动总结怎么写
2014/06/25 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
房产分割协议书范文
2014/11/21 职场文书
学校重阳节活动总结
2015/03/24 职场文书
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL