http://www.jb51.net/article/53271.htm

java socket长连接中解决read阻塞的3个办法


解决的方法有3个 :

1 约定发送的数据长度,比如 http的 keepAlive 就是必须依赖这个的 Content-Length
2 设置超时的时间,根据我的经验,只有在Socket级别设置才有效.

复制代码代码如下:
Socket socket = new Socket(host,port);
socket.setSoTimeout(100); // 如果超过100毫秒还没有数据,则抛出 SocketTimeoutException

3 让发送端发送完数据后,关闭连接。 这个在Http的操作时很常见。

(InputStream如何判断数据已经读取结束)

某些时候无法修改客户端的情况下情况一就只有pass掉了,情况二相对来说比较适合,当阻塞后直接抛出一个异常。情况三不适合长连接,因为整个通信过程中链路是不能中断的,也不能调shutdown结束。其实还有第四种方法:当读取到某些字符就不在往下读取了,比如读取到byebye就break。但是这也需要改客户端代码。选了一种折中的办法-设置超时:

?
1
2
3
4
5
6
7
8
9
10
11
12
StringBuilder sb = new StringBuilder();
try {
   client.setSoTimeout( 500 );
   while ((a = client.getInputStream().read(buf)) != - 1 ) {
     sb.append( new String(buf, 0 , a));
     if (a != size) {
       break ;
     }
   }
} catch (Exception e) {
}
System.out.println(sb);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
upxshell是一款木马加壳软件,它可以对木马程序进行加壳,提高木马的免杀能力和混淆程度,增加其对安全软件的检测难度。与传统的木马加壳软件相比,upxshell在操作简单、易于使用的同时,还具备许多特色功能。 首先,upxshell具备强大的加壳功能。通过使用UPX加壳引擎,upxshell可以对木马程序进行快速、高效的加壳操作,将木马的原始代码进行压缩和加密,形成一个新的可执行文件。这个新的可执行文件在保持原有功能的同时,还能够抵御各种杀毒软件的检测与分析,提高木马的潜伏能力和持久性。 其次,upxshell支持自定义加壳选项。用户可以根据自己的需求,灵活地选择不同的加壳选项,包括加壳算法、压缩比例、混淆技术等,从而针对不同的目标和环境进行定制化的加壳操作。这使得加壳后的木马更具特异性,使其更难以被检测和识别。 另外,upxshell还具备兼容性强的特点。它支持加壳各种不同类型的木马程序,无论是网络钓鱼木马、远程控制木马还是键盘记录木马等,都可以进行加壳处理。这使得upxshell成为安全研究人员和红队人员不可或缺的工具之一。 总结而言,upxshell作为一款木马加壳软件,具备简单易用、强大高效的加壳功能,支持自定义加壳选项和兼容各种类型的木马程序。然而,在使用upxshell进行木马加壳操作时,需要明确明使用目的,并且遵守法律和道德规范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值