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 相关文章推荐
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
Mar 17 PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
php实现高效获取图片尺寸的方法
Dec 12 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
php获取错误信息的方法
Jul 17 PHP
PHP7.0安装笔记整理
Aug 28 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 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中文分词 自动获取关键词介绍
2012/11/13 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
利用python获取Ping结果示例代码
2017/07/06 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
法学毕业生自我鉴定
2013/11/08 职场文书
推广活动策划方案
2014/08/23 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
销售人员管理制度
2015/08/06 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
小学英语教学反思范文
2016/02/15 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang