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横向重复区域显示二法
Sep 25 PHP
PHP form 表单传参明细研究
Jul 17 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
Apr 30 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
PHP获取访问设备信息的方法示例
Feb 20 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 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中static,const与define的使用区别
2013/06/18 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
php实现数字补零的方法总结
2018/09/12 PHP
Javascript模板技术
2007/04/27 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python实现简单温度转换的方法
2015/03/13 Python
Python文件的读写和异常代码示例
2017/10/31 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Python创建临时文件和文件夹
2020/08/05 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
社区矫正工作方案
2014/06/04 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
安全生产月宣传标语
2014/10/06 职场文书
干部年终考核评语
2015/01/04 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技