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 相关文章推荐
提取HTML标签
Oct 09 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
解析php dirname()与__FILE__常量的应用
Jun 24 PHP
php 常用算法和时间复杂度
Jul 01 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
Jul 01 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
利用PHP访问带有密码的Redis方法示例
Feb 09 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
php curl获取到json对象并转成数组array的方法
May 31 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
php allow_url_include的应用和解释
2010/04/22 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
交通安全教育制度
2014/02/02 职场文书
行政副总岗位职责
2014/02/23 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
车辆年检委托书范本
2014/10/14 职场文书
汽车转让协议书范本
2014/12/07 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
HTML基础详解(下)
2021/10/16 HTML / CSS
你真的会用Mysql的explain吗
2022/03/31 MySQL
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫