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
PHP默认安装产生系统漏洞
Oct 09 PHP
PHP 组件化编程技巧
Jun 06 PHP
php 引用(&amp;)详解
Nov 20 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
php长字符串定义方法
Jul 12 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
Nov 09 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
ThinkPHP php 框架学习笔记
2009/10/30 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
jquery $.getJSON()跨域请求
2011/12/21 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
JS跨域请求的问题解析
2018/12/03 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python中http请求方法库汇总
2016/01/06 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
python3实现飞机大战
2020/11/29 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
银行柜员应聘推荐信范文
2013/11/24 职场文书
高三自我评价
2014/02/01 职场文书
环保小标语
2014/06/13 职场文书
纪委立案决定书
2015/06/24 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript