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 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
FleaPHP的安全设置方法
Sep 15 PHP
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PDO::exec讲解
Jan 28 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学习笔记之面向对象编程
2012/12/29 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
PHP图片加水印实现方法
2016/05/06 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
jquery $.each()使用探讨
2013/09/23 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
python 读取鼠标点击坐标的实例
2018/12/29 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
简单而又朴实的个人求职信分享
2013/12/12 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
医生个人年度总结
2015/02/28 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
Go获取两个时区的时间差
2022/04/20 Golang