mina设置读取超时框架中怎么做请求响应超时处理

mina框架保持长连接状态问题
[问题点数:40分,结帖人guzhichongshi]
mina框架保持长连接状态问题
[问题点数:40分,结帖人guzhichongshi]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。利用volley进行http设置请求头、超时及请求参数设置(post) - 博客频道 - CSDN.NET
hpb21的专栏
理想迈进中
分类:androidjson
这里以post请求说明,get请求相似设置请求头及超时。
1.自定义request,继承com.android.volley.Request
2.构造方法实现(basecallback,为自定义的监听,实现Response.Listener,ErrorListener接口)--post请求
public BaseRequest(String url,String params, BaseCallback&T& callback)
super(Method.POST, url, callback);
this.callback =
this.params =
Log.e(TAG, &request:& + params);
setShouldCache(false);
3.请求头设置:重写getHeaders方法
public Map&String, String& getHeaders() throws AuthFailureError
Map&String, String& headers = new HashMap&String, String&();
headers.put(&Charset&, &UTF-8&);
headers.put(&Content-Type&, &application/x-javascript&);
headers.put(&Accept-Encoding&, &gzip,deflate&);
设置字符集为UTF-8,并采用gzip压缩传输
4.超时设置:重写getRetryPolicy方法&span style=&color:#cc0000;&&非常不好意,之前写的时候 确实没有研究透,后面发现这个问题,没有去纠正博客,对不起了 &_&.,&/span&&span style=&color:#cc0000;&&超时设置可以直接通过setRetryPolicy设置&/span&
5.请求参数组装:重写getBody方法
public byte[] getBody() throws AuthFailureError
return params == null ? super.getBody() : params.getBytes();
结合上一篇gzip响应解析数据即可实现现在常见的http实现json数据的gzip传输
在使用Volley库时推荐大家使用最新库&/mcxiaoke/android-volley(OOM等问题)
为表达我的歉意,列举分享一些有用的库个资源-_-:
图片裁剪 crop :/jdamcd/android-crop
图片加载库glide-google推荐:/bumptech/glide
网络状态监测-facebook:/facebook/network-connection-class
RxAndroid:响应式编程&/ReactiveX/RxAndroid
通信库AndroidAsync/ION,异步socket/web socket,http client+server &/koush/AndroidAsync
trinea相关开源分析:/Trinea/android-open-project(各种组件),,/
开源播放器:
ijkplayer 现在应用很多:/Bilibili/ijkplayer
vlc:http://git.videolan.org/
排名:第8059名
(11)(5)(19)(39)(1)(1)(1)(6)(7)(4)(1)(3)(3)(1)(17)(2)(3)(2)(1)(1)(3)(1)(1)(0)(2)
actionscript错误当前位置: →
→ Mina框架中怎么做请求响应超时处理
Mina框架中怎么做请求响应超时处理
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: Mina框架中如何做请求响应超时处理之前服务都是用的webservice,现在为了实时性要用socket实现,有人用Mina框架做了,现在客户...
"Mina框架中怎么做请求响应超时处理"::
mina框架中如何做请求响应超时处理之前服务都是用的webservice,现在为了要用socket实现,有人用mina框架做了,现在客户端和服务器能通信,服务端有心跳消息去判断客户端的情况,问题是我在客户端怎么判断一个业务请求的响应超时了,访问不同的服务发送的都是不同的消息包。他用的这个mina框架里面有没有相关的东西可以用?现在的情况是客户端发个请求,服务端接收之后就处理,没接收到就不管了。客户端没有做等待接收到这个请求的响应之后再进行下一步操作的功能。。我现在想的是不是客户端发送请求之后弄个定时器,如果时间到了就报个请求超时的错误,那接收到响应之后怎么判断是哪条请求的响应,响应消息收到了定时器是不是要去掉。。不知道正规的做法应该是怎样的?本人对没啥经验,请有经验的给点相关提示,谢谢。------解决方案--------------------
socket本来就是这样的把,如果要判断某个请求超时只能程序自己判断了 搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
Mina框架中怎么做请求响应超时处理_J2EE相关文章
J2EE_总排行榜
J2EE_月排行榜
J2EE_周排行榜
J2EE_日排行榜君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Mina框架中做请求响应超时处理
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口博客访问: 4256411
博文数量: 681
博客积分: 2150
博客等级: 上尉
技术积分: 12032
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 架构设计与优化
TCP连接简介
当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,
当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,
连接的建立是需要三次握手的,而释放则需要4次握手,
所以说每个连接的建立都是需要资源消耗和时间消耗的
经典的三次握手示意图:
经典的四次握手关闭图:
一、长连接与短连接
长连接: 指在一个TCP连接上可以连续发送多个数据包,
& & & & 在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接;
& & & & 一般需要自己做在线维持。&
短连接: 指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接;
& & & & 一般银行都使用短连接。&
& & & & 它的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段&
比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。&
其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。
长连接与短连接的操作过程&
通常的短连接操作步骤是:&
& 连接→数据传输→关闭连接;
而长连接通常就是:&
& 连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;&
这就要求长连接在没有数据通信时,定时发送数据包(心跳),以维持连接状态,
短连接在没有数据传输时直接关闭就行了
什么时候用长连接,短连接?
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。
每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,
所以每个操作完后都不断开,下次次处理时直接发送数据包就OK了,不用建立TCP连接。
例如:数据库的连接用长连接,&
如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
二、发送接收方式
报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况:&
(1)异步双工:接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收&
(2)异步单工:接收和发送是用两个不同的程序来完成。&
报文发送和接收是同步进行,既报文发送后等待接收返回报文。&
同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,
超过该时间发送方不再等待读返回报文,直接通知超时返回。
在长连接中一般是没有条件能够判断读写什么时候结束,所以必须要加长度报文头。
读函数先是读取报文头的长度,再根据这个长度去读相应长度的报文。
三. 单工、半双工和全双工
根据通信双方的分工和信号传输方向可将通信分为三种方式:
在计算机网络中主要采用双工方式,其中:
局域网采用半双工方式,
城域网和广域网采用全双年方式。 &&
1. 单工(Simplex)方式:
通信双方设备中发送器与接收器分工明确,只能在由发送器向接收器的单一固定方向上传送数据。
采用单工通信的典型发送设备如早期计算机的读卡器,典型的接收设备如打印机。 &&
2. 半双工(Half Duplex)方式:
通信双方设备既是发送器,也是接收器,两台设备可以相互传送数据,但某一时刻则只能向一个方向传送数据。
例如,步话机是半双工设备,因为在一个时刻只能有一方说话。 &&
3. 全双工(Full Duplex)方式:
通信双方设备既是发送器,也是接收器,两台设备可以同时在两个方向上传送数据。
例如,电话是全双工设备,因为双方可同时说话。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,
而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,
如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。
所以并发量大,但每个用户无需频繁操作情况下需用短连好。
总之,长连接和短连接的选择要视情况而定。
四、一个最简单的长连接与心跳保持的示例程序
&******************************************************************************
&* \Author
&******************************************************************************
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <resolv.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>
#define MAXBUF 1024
int main(int argc, char **argv)
& int sockfd,
& struct sockaddr_
& char buffer[MAXBUF];
& char heartbeat[20] = "hello server";
& int retval, maxfd = -1;
& if (argc != 3)
& & printf("error! the right format should be : \
& & & & & \n\t\t%s IP port\n\t eg:\t%s127.0.0.1 80\n",
& & & & & argv[0], argv[0]);
& & exit(0);
& if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
& & perror("Socket");
& & exit(errno);
& bzero(&dest, sizeof(dest));
& dest.sin_family = AF_INET;
& dest.sin_port = htons(atoi(argv[2]));
& memset(&(dest.sin_zero), 0, 8);
& if (inet_aton(argv[1], (struct in_addr*)&dest.sin_addr.s_addr) == 0)
& & perror(argv[1]);
& & exit(errno);
& if (connect(sockfd, (struct sockaddr*)&dest, sizeof(dest)) != 0)
& & perror("Connect");
& & exit(errno);
& printf("\nReady to start chatting.\n\
& & & & Direct input messages and \n\
& & & & enter to send messages to the server\n");
& while (1)
& & FD_ZERO(&rfds);
& & FD_SET(0, &rfds);
& & maxfd = 0;
& & FD_SET(sockfd, &rfds);
& & if (sockfd > maxfd)
& & & maxfd =
& & tv.tv_sec = 2;
& & tv.tv_usec = 0;
& & retval = select(maxfd+1, &rfds, NULL, NULL, &tv);
& & if (retval == -1)
& & & printf("Will exit and the select is error! %s", strerror(errno));
& & else if (retval == 0)
& & & //printf("No message comes, no buttons, continue to wait ...\n");
& & & len = send(sockfd, heartbeat, strlen(heartbeat), 0);
& & & if (len < 0)
& & & & printf("Message '%s' failed to send ! \
& & & & & & & The error code is %d, error message '%s'\n",
& & & & & & & heartbeat, errno, strerror(errno));
& & & else
& & & & printf("News: %s \t send, sent a total of %d bytes!\n",
& & & & & & & heartbeat, len);
& & & if (FD_ISSET(sockfd, &rfds))
& & & & bzero(buffer, MAXBUF+1);
& & & & len = recv(sockfd, buffer, MAXBUF, 0);
& & & & if (len > 0)
& & & & & printf("Successfully received the message: '%s',%d bytes of data\n",
& & & & & & & & & buffer, len);
& & & & else
& & & & & if (len < 0)
& & & & & & & printf("Failed to receive the message! \
& & & & & & & & & & The error code is %d, error message is '%s'\n",
& & & & & & & & & & errno, strerror(errno));
& & & & & else
& & & & & & & printf("Chat to terminate!\n");
& & & if (FD_ISSET(0, &rfds))
& & & & bzero(buffer, MAXBUF+1);
& & & & fgets(buffer, MAXBUF, stdin);
& & & & if (!strncasecmp(buffer, "quit", 4))
& & & & & printf("Own request to terminate the chat!\n");
& & & & len = send(sockfd, buffer, strlen(buffer)-1, 0);
& & & & if (len < 0)
& & & & & printf("Message '%s' failed to send ! \
& & & & & & & & The error code is %d, error message '%s'\n",
& & & & & & & & buffer, errno, strerror(errno));
& & & & else
& & & & & printf("News: %s \t send, sent a total of %d bytes!\n",
& & & & & & & & buffer, len);
& close(sockfd);
& return 0;
第二卦:《坤卦》&
坤:元,亨,利牝马之贞。君子有攸往,先迷,后得主,利。西南得朋,东北丧朋。安贞吉。
【白话】《坤卦》象征地:元始,亨通,如果像雌马那样柔顺,则是吉利的。
君子从事某项事业,虽然开始时不知所从,但结果会是有利的。如往西南方,则会得到朋友的帮助。
如往东南方,则会失去朋友的帮助。如果保持现状,也是吉利的。
《象》曰:地势坤,君子以厚德载物。
【白话】《象辞》说:坤象征大地,君子应效法大地,胸怀宽广,包容万物。
阅读(66532) | 评论(0) | 转发(9) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 mina默认超时时间 的文章

 

随机推荐