php socket通信(tcp/udp)实例分析


Posted in PHP onFebruary 14, 2016

本文实例讲述了php socket通信(tcp/udp)方法。分享给大家供大家参考,具体如下:

注意

1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1
2.server.php后台跑起来的时候nohup php server.php > /var/tmp/a.log 2>&1 &

一: udp 方式

1) server.php

<?php
//error_reporting( E_ALL );
set_time_limit( 0 );
ob_implicit_flush();
$socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
if ( $socket === false ) {
  echo "socket_create() failed:reason:" . socket_strerror( socket_last_error() ) . "\n";
}
$ok = socket_bind( $socket, '202.85.218.133', 11109 );
if ( $ok === false ) {
  echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) );
}
while ( true ) {
  $from = "";
  $port = 0;
  socket_recvfrom( $socket, $buf,1024, 0, $from, $port );
  echo $buf;
  usleep( 1000 );
}
?>

2) client.php

<?php
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$msg = 'hello';
$len = strlen($msg);
socket_sendto($sock, $msg, $len, 0, '202.85.218.133', 11109);
socket_close($sock);
?>

二: TCP 方式

1)server.php

<?php
//error_reporting( E_ALL );
set_time_limit( 0 );
ob_implicit_flush();
$socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_bind( $socket, '192.168.2.143', 11109 );
socket_listen($socket);
$acpt=socket_accept($socket);
echo "Acpt!\n";
while ( $acpt ) {
  $words=fgets(STDIN);
  socket_write($acpt,$words);
  $hear=socket_read($acpt,1024);
  echo $hear;
  if("bye\r\n"==$hear){
    socket_shutdown($acpt);
    break;
  }
  usleep( 1000 );
}
socket_close($socket)
?>

2) client.php

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$con=socket_connect($socket,'192.168.2.143',11109);
if(!$con){socket_close($socket);exit;}
echo "Link\n";
while($con){
    $hear=socket_read($socket,1024);
    echo $hear;
    $words=fgets(STDIN);
    socket_write($socket,$words);
    if($words=="bye\r\n"){break;}
}
socket_shutdown($socket);
socket_close($sock);
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP实现的功能是显示8条基色色带
Oct 09 PHP
聊天室php&amp;mysql(二)
Oct 09 PHP
PHP高级OOP技术演示
Aug 27 PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 PHP
php类中private属性继承问题分析
Nov 01 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
提高PHP编程效率的方法
Nov 07 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 #PHP
php中的常用魔术方法汇总
Feb 14 #PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 #PHP
PHP浮点比较大小的方法
Feb 14 #PHP
PHP魔术方法使用方法汇总
Feb 14 #PHP
PHP函数超时处理方法
Feb 14 #PHP
PHP使用file_get_content设置头信息的方法
Feb 14 #PHP
You might like
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
Vue-路由导航菜单栏的高亮设置方法
2018/03/17 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python分析网页上所有超链接的方法
2015/05/08 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
python实现字典嵌套列表取值
2019/12/16 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
python中取绝对值简单方法总结
2020/07/24 Python
金融专业个人的自我评价
2013/10/18 职场文书
传媒专业推荐信范文
2013/11/23 职场文书
陈欧的广告词
2014/03/18 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
违纪学生保证书
2015/02/27 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
退休欢送会致辞
2015/07/31 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫