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生成随机数或者字符串的代码
Sep 05 PHP
PHP 翻页 实例代码
Aug 07 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP遍历数组的几种方法
Mar 22 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
PHP常用函数和常见疑难问题解答
Mar 05 PHP
PHP获取文件相对路径的方法
Feb 26 PHP
php字符串分割函数用法实例
Mar 17 PHP
10条php编程小技巧
Jul 07 PHP
详解 PHP加密解密字符串函数附源码下载
Dec 18 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 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
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
js读取本地文件的实例
2017/12/22 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Python使用Pygame绘制时钟
2020/11/29 Python
年度献血先进个人事迹材料
2014/02/14 职场文书
大学生心理活动总结
2014/07/04 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
Python Matplotlib绘制两个Y轴图像
2022/04/13 Python