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 相关文章推荐
mysql limit查询优化分析
Nov 12 PHP
php实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
PHP print类函数使用总结
Jun 25 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
php注销代码(session注销)
May 31 PHP
php类常量的使用详解
Jun 08 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
YII分模块加载路由的实现方法
Oct 01 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可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
JS打印组合功能
2016/08/04 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
python rsa 加密解密
2017/03/20 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
文字自荐书范文
2014/02/10 职场文书
户外活动策划方案
2014/03/12 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
国家助学金受助感言
2015/08/01 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle