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网站在线人数统计
Apr 09 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
PHP学习笔记之三 数据库基本操作
Jan 17 PHP
解析isset与is_null的区别
Aug 09 PHP
分享PHP header函数使用教程
Sep 05 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
php模拟post提交数据的方法
Feb 12 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 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
动易数据转成dedecms的php程序
2007/04/07 PHP
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
python 文件操作api(文件操作函数)
2016/08/28 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
django的model操作汇整详解
2019/07/26 Python
如何通过python实现全排列
2020/02/11 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
请假条范文大全
2014/04/10 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
组织生活会发言材料
2014/12/15 职场文书
2015年预算员工作总结
2015/05/14 职场文书
Python jiaba库的使用详解
2021/11/23 Python