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 相关文章推荐
图形数字验证代码
Oct 09 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
浅谈php://filter的妙用
Mar 05 PHP
mongodb和php的用法详解
Mar 25 PHP
PHP实现字母数字混合验证码功能
Jul 11 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数字游戏 计算24算法
2012/06/10 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
FCK调用方法..
2006/12/21 Javascript
共享自己写一个框架DreamScript
2007/01/20 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Tesserocr库的正确安装方式
2018/10/19 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Python单链表原理与实现方法详解
2020/02/22 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
用python制作个音乐下载器
2021/01/30 Python
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
房地产经营管理专业自荐信
2014/09/02 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
Python基础之hashlib模块详解
2021/05/06 Python