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模板技术[转]
Jan 04 PHP
PHP中cookies使用指南
Mar 16 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
php时间计算相关问题小结
May 09 PHP
PHP中串行化用法示例
Nov 16 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
学习thinkphp5.0验证类使用方法
Nov 16 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
PHP URL参数获取方式的四种例子
2014/02/28 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
新浪中用来显示flash的函数
2007/04/02 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
Python 列表(List)操作方法详解
2014/03/11 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
大学生个人自我鉴定
2013/12/03 职场文书
社区文化建设方案
2014/05/02 职场文书
小学英语复习计划
2015/01/19 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
sql注入教程之类型以及提交注入
2021/08/02 MySQL
Python经常使用的一些内置函数
2022/04/11 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers