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 pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
深入php中var_dump方法的使用详解
Jun 24 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
php实现比较全的数据库操作类
Jun 18 PHP
非常实用的php验证码类
May 15 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP执行普通shell命令流程解析
Aug 24 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 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
用户的详细注册和判断
2006/10/09 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
Python中的localtime()方法使用详解
2015/05/22 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
Python初学者常见错误详解
2019/07/02 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
基于python操作ES实例详解
2019/11/16 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
Python实现EM算法实例代码
2020/10/04 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
python字典按照value排序方法
2020/12/28 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
行政助理岗位职责
2013/11/10 职场文书
音乐学专业求职信
2014/07/22 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
小学生毕业评语
2014/12/26 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js