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 缓冲的免费实现方法
Oct 09 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
php表单请求获得数据求和示例
May 15 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
php实现图片等比例缩放代码
Jul 23 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
PHP的简单跳转提示的实现详解
Mar 14 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 PHP
PHP与Web页面的交互示例详解二
Aug 04 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
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
vuex实现购物车功能
2020/06/28 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python实现拓扑排序的基本教程
2018/03/11 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
浅析python标准库中的glob
2020/03/13 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
应用服务器有那些
2012/01/19 面试题
护理专科自荐书范文
2014/02/18 职场文书
房屋转让协议书
2014/04/11 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
上班迟到检讨书
2014/09/15 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
环境卫生整治简报
2015/07/20 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技