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 microtime获取浮点的时间戳
Feb 21 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
PHP图像处理类库及演示分享
May 17 PHP
php类的定义与继承用法实例
Jul 07 PHP
php实现的二分查找算法示例
Jun 20 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
在PHP中实现使用Guzzle执行POST和GET请求
Oct 15 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 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中Closure类的使用方法及详解
2015/10/09 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
客户端静态页面玩分页
2006/06/26 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
javascript中length属性的探索
2011/07/31 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
Angular2库初探
2017/03/01 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
python的中异常处理机制
2018/08/30 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
python空元组在all中返回结果详解
2020/12/15 Python
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
英文自荐信格式
2013/11/28 职场文书
业务总经理岗位职责
2014/02/03 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
研究生导师推荐信
2014/09/06 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书