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 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
laravel5使用freetds连接sql server的方法
Dec 07 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缩略图生成程式(需要GD库支持)
2007/03/06 PHP
php自动获取目录下的模板的代码
2010/08/08 PHP
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
python写日志封装类实例
2015/06/28 Python
Python3中exp()函数用法分析
2019/02/19 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
python cookie反爬处理的实现
2020/11/01 Python
重构Python代码的六个实例
2020/11/25 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
采购员岗位职责范本
2015/04/07 职场文书
中秋节感想
2015/08/10 职场文书
小学音乐课教学反思
2016/02/18 职场文书
python数字图像处理:图像的绘制
2022/06/28 Python