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 相关文章推荐
一个简单实现多条件查询的例子
Oct 09 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
php实现检查文章是否被百度收录
Jan 27 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
php使用event扩展的io复用测试的示例
Oct 20 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
PHP HTML代码串截取代码
2008/12/29 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
实体的生命周期
2013/08/31 面试题
四年级数学教学反思
2014/02/02 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
大学生村官演讲稿
2014/04/25 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
新郎新娘答谢词
2015/01/04 职场文书
工资证明范本
2015/06/12 职场文书
未婚证明范本
2015/06/15 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL