java socket 循环接收_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?...

news/2024/7/8 7:42:24

最近在写Socket客户端的时候遇到点问题

客户端在创建时创建了2个线程

一个监听键盘输入事件,使用的是buffered,当检测到输入完成时写入流发送给服务端。

String content = "";

while (!(content = bufferedReader.readLine()).equals("exit")) {

byte[] type= new byte[1];

type[0] = Const.Message;

byte[] bytes = EncodeKit.encode(type, content);

outputStream.write(bytes);

outputStream.flush();

}

一个while循环不停发送心跳包

一个while循环接收服务端发回来的消息

现在的问题是我想在客户端知道服务端返回消息的时间有没超过规定时间,如果有则判定该连接已断开。

问题是接收消息的线程和发送心跳的线程是分开的?我如何知道当这条消息发送过去后服务端返回的消息有没有

超过指定时间?

总感觉我的设计有问题,但又不知道如何实现,求解答。

ps:使用三个线程的原因是线程读取方法是阻塞方法,如果在发送心跳的while循环中再写一个接收消息的方法,那么

就会一直执行这个接收消息的方法,没办法再发送心跳了。

发送心跳代码:

outputStream = socket.getOutputStream();

inputStream = socket.getInputStream();

while (true) {

Thread.sleep(time);//设置心跳间隔时间

byte[] type = new byte[1];

type[0] = Const.HEART;

byte[] bytes = EncodeKit.encode(type, "");

//发送心跳包

outputStream.write(bytes);

outputStream.flush();


http://www.niftyadmin.cn/n/2778072.html

相关文章

atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 h--n v1 q31.xlsx

atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 h--n v1 q31.xlsx1 Mizian陕北方言english英语spain西班牙语cantonese粤语CHINESE汉语frencharabhindu发音example例子57 Hahao好歹58 Haidichonhaibha不懂59 Haikai理解haiha懂的,理解60 Haonil 饿了我吧61 H…

java socket异常_Java Socket常见异常处理

在 java网络编程Socket通信中,通常会遇到以下异常情况:第1个异常是 java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port…

山东农业大学计算机科学与技术分数,2017山东农业大学专业排名及分数线

山东农业大学学校为祖国的建设培养出一代又一代的尖端技术人才,它是一所具有浓厚文化气息的重点大学。下面就是学习啦小编给大家整理的山东农业大学排名,希望对你有用!山东农业大学排名山东农业大学在山东省排名情况山东农业大学专业排名山东农业大学专业…

用计算机计算数学公式,Formula Calculator公式计算器

小编给大家收集了一款多功能的数学公式计算器--Formula Calculator,这款计算器比起系统自带的计算器来讲,更加专业,可以计算更加复杂的数学公式,内置多种计算公式,支持多种算法解答与多种数字符号,功能非常…

2016年2月全球浏览器份额:IE第一 降幅环比增大

IDC评述网(idcps.com)03月04日报道:据市场研究公司Net Applications最新数据显示,在2016年2月份,全球范围内使用最多的浏览器是IE,其份额为44.79%,虽较上月下降了2.11%,但霸主地位暂…

html如何引用外部json,从外部URL解析json仅Html和JS

该url是一个字符串,而不是json。使用AJAX来获取数据(使用jquery)var link;$.ajax({url: "test.html",}).done(function(data) {link data;});然后,提取数据;output.innerHTMLjcontent.id;是价值。你得到这样的关键:使用function而…

海尔云悦2db微型计算机,海尔云悦mini 2w做服务器

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率三年低至5折,多种配置可选了解详情在控制台重…

java 变量共享_Java 并发编程(三):如何保证共享变量的可见性?

上一篇,我们谈了谈如何通过同步来保证共享变量的原子性(一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行),本篇我们来谈一谈如何保证共享变量的可见性(多个线程访问同一个变量时,一个线程修改了…