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适配器模式介绍
Aug 14 PHP
PHP关联链接常用代码
Nov 05 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
PHP编程风格规范分享
Jan 15 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
php实现分页显示
Nov 03 PHP
WordPress开发中短代码的实现及相关函数使用技巧
Jan 05 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 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获得文件扩展名三法
2006/11/25 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
PHP分页类集锦
2014/11/18 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python 实现dict转json并保存文件
2019/12/05 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
婚宴领导致辞
2015/07/28 职场文书
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python