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 小乘法表实现代码
Jul 16 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
php学习之function的用法
Jul 14 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
php调用shell的方法
Nov 05 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
php利用ZipArchive类操作文件的实例
Jan 21 PHP
PHP7 list() 函数修改
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的类树(支持无限分类)
2006/10/09 PHP
PHP页面中文乱码分析
2013/10/29 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python的SQLAlchemy框架使用入门
2015/04/29 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
浅析python中while循环和for循环
2019/11/19 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
python 追踪except信息方式
2020/04/25 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Python中qutip用法示例详解
2020/10/02 Python
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
皮肤科医师岗位职责
2013/12/04 职场文书
股权收购意向书
2014/04/01 职场文书
应届生自荐信
2014/06/30 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
员工考勤管理制度
2015/08/06 职场文书
工商局调档介绍信
2015/10/22 职场文书
高中英语教学反思范文
2016/03/02 职场文书
python爬虫selenium模块详解
2021/03/30 Python
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android