php socket 超时设置
1、php创建socket的方法和设置超时的方法,贴出来分享一下
1 //如果$waitAckSec=0,则返回成功发送的字节�? 2 //如果$waitAckSec大于0,则返回发送后接收到得内容 3 //任何情况下,失败都返回FALSE 4 function sendUdp($host, $port, $buff,$waitAckSec=0) { 5 $socket = ($result = @socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)); 6 //发送超时1秒 7 socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>3, "usec"=>0 ) ); 8 //接收超时6秒 9 socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>6, "usec"=>0 ) ); 10 if($socket){ 11 $result = @socket_sendto($socket,$buff,strlen($buff),0,$host,$port); 12 if($waitAckSec>0){ 13 $result = FALSE; 14 $read = array($socket); 15 $write = NULL; 16 $except = NULL; 17 if(@socket_select($read,$write,$except,$waitAckSec)>0){ 18 $fromHost = ""; 19 $fromPort = 0; 20 @socket_recvfrom($socket,$result,4096,0,$fromHost,$fromPort); 21 $result = phpext_unpack($result); 22 if($result["needAck"] == 1){ 23 $this->sendUdp($host, $port, $result["ackdata"]); 24 if(isset ($result['data']['list']) && isset ($result['data']['totalCount'])){ 25 $list = $result['data']['list']; 26 $count = $result['data']['totalCount']; 27 while($count> count($list)){ 28 @socket_recvfrom($socket,$result_temp,4096,0,$fromHost,$fromPort); 29 $result_temp = phpext_unpack($result_temp); 30 $this->sendUdp($host, $port, $result_temp["ackdata"]); 31 $list = array_merge($list,$result_temp['data']['list']); 32 } 33 $result['data']['list'] = $list; 34 } 35 }else{ 36 @socket_recvfrom($socket,$result,4096,0,$fromHost,$fromPort); 37 $result = phpext_unpack($result); 38 if($result["needAck"] == 1){ 39 $this->sendUdp($host, $port, $result["ackdata"]); 40 if(isset ($result['data']['result']) && isset ($result['data']['userID'])){ 41 $list = $result['data']['list']; 42 $count = $result['data']['totalCount']; 43 while($count> count($list)){ 44 @socket_recvfrom($socket,$result_temp,4096,0,$fromHost,$fromPort); 45 $result_temp = phpext_unpack($result_temp); 46 $this->sendUdp($host, $port, $result_temp["ackdata"]); 47 $list = array_merge($list,$result_temp['data']['list']); 48 } 49 $result['data']['list'] = $list; 50 } 51 } 52 } 53 }else{ 54 $result = SEND_UDP_ERROR; 55 } 56 } 57 @socket_close($socket); 58 } 59 return $result; 60 }
转载于:https://www.cnblogs.com/lsl8966/p/3508278.html
php socket 超时设置相关推荐
- python3 socket 超时设置
针对链接(connect)时候的超时: # 法一: import socketsocket.setdefaulttimeout(5) sock = socket.socket(socket.AF_IN ...
- 远程主机关闭了一个现有连接python_python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054 | 学步园...
python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接.问题解决方案: 前几天使用python读取网页.因为对一个网站大量的使用urlopen操作,所以 ...
- python远程主机强迫关闭了_[转] python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054...
python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接.问题解决方案: 前几天使用python读取网页.因为对一个网站大量的使用urlopen操作,所以 ...
- socket 超时设置
int nNetTimeout=1000;//1秒 //发送时限 setsockopt(socket,SOL_S0CKET, SO_SNDTIMEO, (char *)&nNetTimeout ...
- netty socket超时设置_彻底搞懂 netty 线程模型
编者注:Netty是Java领域有名的开源网络库,特点是高性能和高扩展性,因此很多流行的框架都是基于它来构建的,比如我们熟知的Dubbo.Rocketmq.Hadoop等.本文就netty线程模型展开 ...
- netty socket超时设置_Netty 学习和进阶策略
背景 Netty 框架的特点 Netty 的一个特点就是入门相对比较容易,但是真正掌握并精通是非常困难的,原因有如下几个: 涉及的知识面比较广:Netty 作为一个高性能的 NIO 通信框架,涉及到的 ...
- JDBC未设置socket超时导致应用程序的线程池阻塞
应用阻塞,查看堆栈发现线程阻塞在线程池的同步方法上,而进入同步方法的线程在等待socket读. 推测为网络问题导致的连接阻塞,但应用未设置socket超时而一直等待.网上说JDBC通过socket实现 ...
- ZuulFilter和Fegin超时设置
之前配置ZuulFilter和Fegin超时时用了相同的配置方法,之前请求时数据量较小,没有出现什么问题.可是今天用Sidecar调用了python的一个服务,这个服务比较耗时,问题就出现了,各种超时 ...
- Python 技术篇-全局与当前socket超时连接时间设置方法实例演示,查看socket超时连接时间
socket.setdefaulttimeout() 方法用于设置全局socket超时连接时间. settimeout()方法用于设置全局socket超时连接时间. 代码演示: import sock ...
- Socket编程实践(9) --套接字IO超时设置方法
引:超时设置3种方案 1. alarm超时设置方法 //代码实现: 这种方式较少用 void sigHandlerForSigAlrm(int signo) {return ; }signal(SIG ...
最新文章
- Java元数据区的概念_java之元数据(metadata)-Go语言中文社区
- 在三个Java IDE中生成的三种常见方法
- react把表格渲染好ui_react 入坑笔记(五) - 条件渲染和列表渲染
- 2019-12-17 drivers/clocksource/arm_arch_timer.c
- 【linux】web socket
- SpringCloud之Ribbon源码分析(一)
- 【OOP编程思想小感悟】
- 郑州大学“战疫杯”大学生程序设计在线邀请赛(6)(C++题解+详细思路)2022年5月14日
- USB无线网卡和PCI-E无线网卡如何选择?
- 机器学习第六课part1(最小二乘,L1,L2正则)
- C++——NOIP模拟题——葫芦
- libusb,libusbk,winusb的区别
- 电脑 及 电脑应用软件背景色、字体的设置(护眼色)
- 读曾仕强《管理的方与圆》笔记一
- MPP(高斯DB)常用语句(不定时更新添加)
- 删除数据库表中的重复记录
- ajax,HTTP原理 : 网络传输协议,网页从输入url到渲染的流程,函数防抖和节流
- 【转】花开正当时,十四款120/128GB SSD横向评测
- linux如何设置mac快捷键,Mac与Linux常用快捷键汇总
- echarts 饼图 逆时针降序排序
热门文章
- centos安装apache+mysql_CentOS7安装apache+mysql+php环境
- android progressdialog 倒计时,自定义progressdialog——带倒计时的progressbar效果
- 在Vue项目中添加vue router
- Kotlin 输出“Hello World”
- Flutter进阶第12篇: 检测应用版本号、服务器下载文件以及实现App自动升级、安装
- 如何使用手机端、ipad端来编写博客
- JSP解决 — 登录注册界面点击按钮无法获取值在界面显示
- 查看网络情况netstat指令与动态监控top指令
- Winform/WPF国际化处理
- 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice