java socket 重连_java socket 重连问题
客户端偶尔会出现read阻塞的情况,加上setSoTimeout后,会抛出读取超时异常,引起read阻塞的原因未查明。在捕获异常后关闭连接,重新连接后read时仍然会出现读取超时,只有重启程序后...
客户端偶尔会出现read阻塞的情况,加上setSoTimeout后,会抛出读取超时异常,引起read阻塞的原因未查明。在捕获异常后关闭连接,重新连接后read时仍然会出现读取超时,只有重启程序后才会正常,服务端未做任务处理,请问是什么原因能导致只有重启客户端程序才能read,而重新连接却不行,请高手赐教,提供解决办法,谢谢
private String sendCommand(String command) {
StringBuffer sb;
try {
out.write(command.getBytes("utf-8"));
out.flush();
byte[] b = new byte[1000];
sb = new StringBuffer();
int length = -1;
while ((length = in.read(b)) > 0) {
// 获得消息
String message = new String(b, 0, length, "UTF-8");
sb.append(message);
if (message.indexOf("") != -1) {
System.out.println("收到消息:" + sb.toString());
return sb.toString();
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
close();// 关闭连接
open();// 重新连接
return sendCommand(command);
}
}
public void close() {
try {
if (in != null)
in.close();
if (out != null)
out.close();
if (socket != null)
socket.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
private void open() {
try {
socket = new Socket(ip, port);
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
reset();// 重置RFID
} catch (Exception e) {
System.out.println("RFID连接断开Ip:" + ip + "-Port:" + port);
close();// 关闭连接
open();// 重新连接
}
}
public boolean reset() {
boolean result = false;
for (int i = 0; i < maxResetTimes; i++) {
String msg = "0025000000010001";// 启动rfid命令
boolean response = getResponseCode(sendCommand(msg));
if (response) {
return result = true;// 启动成功返回
}
}
if (!result) {
JOptionPane.showMessageDialog(ControlSystem.main, "ip:" + ip + "-port:" + port + "RFID启动失败,请确保串口工具已开启!");
logger.error("ip:" + ip + "-port:" + port + "尝试次启动通信失败!");
}
return result;
}
展开
java socket 重连_java socket 重连问题相关推荐
- java socket远空_JAVA Socket超时浅析
套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字",可以想象它们之间有一条 ...
- java socket 线程池_java socket编程的一个例子(线程池)
服务器程序EchoServer.java: import java.io.*; import java.net.*; import java.util.concurrent.*; public cla ...
- java socket 循环读取_java socket tcp(服务器循环检测)
刚才看了下以前写了的代码,tcp通信,发现太简单了,直接又摘抄了一个,运行 博客:http://blog.csdn.net/zhy_cheng/article/details/7819659 优点是服 ...
- java socket编程心跳_Java Socket编程心跳包创建实例解析
1.什么是心跳包? 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包. 用来判断对方(设备,进程或其它网元)是否正常运行,采用 ...
- java socket负载均衡_Java Socket分发服务负载均衡
1 1. 设备请求分发服务器,分发服务器返回有效的socket服务器ip与port,然后断开连接.2 a) 设备与服务器建立连接.3 b) 服务器接收到连接请求后,立即将分配好的socket服务器ip ...
- java socket readline 阻塞_java Socket readLine() 阻塞
1,当使用调用 在服务器端调用readLine()的时候,客户端就如果调用的是print()方法就会卡住,而且不会报错,改成println() 就会畅通! 2,如果 socket端 while()循环 ...
- java socket 全双工客户端_java socket实现全双工通信
单工.半双工和全双工的定义 如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工. 如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输. 如果 ...
- java socket聊天工具_java+socket 简易聊天工具
1.服务器端程序 package com.test3; import java.io.*; import java.net.*; import java.awt.*; import java.awt. ...
- java客户端服务器代码_Java Socket通信 客户端服务器端基本代码
[服务器端] import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import ...
最新文章
- 【300】◀▶ IDL - ENVI API
- web访问 FastDFS 方法思路
- 嗯?原来if可以调用方法的?
- 《c语言从入门到精通》看书笔记——第2章 算法
- 学习笔记(02):Python网络编程并发编程-assert断言的用途
- 计算机虚拟现实技术论文好写吗,虚拟现实技术的论文
- 使用vs2019和pyinstaller将py文件打包成一个exe文件(含图标),pyinstaller安装失败解决方案
- python 和vba在财务上_Excel函数和VBA技术在财务工作中的应用
- 【技术帖】真正解决反恐精英csOL:StartService 0X204 为防御非法程序driver
- stm32_电容触摸按键
- java电商项目搭建-------分布式文件存储系统(fastDFS)
- app开发外包公司一般报价多少钱?
- python-docx库实战修改word文档格式
- 关于安装mathtype后找不到电脑预装office2016安装路径的问题
- JavaScript 前端简单工厂模式、工厂方法模式、抽象工厂模式优缺点及详解 — 设计模式《二》
- PCF8574AT驱动LCD1602
- 帆软两台服务器文件同步,同步帆软代码
- 网络和多媒体知识(2)
- 安装composer报错Project directory fecshop/ is not empt
- 双麦克风语音去混响算法C代码实现(附github项目链接)
热门文章
- 猜数字游戏随机生成一个随机数,并给玩家三次机会猜测
- 论文写作和修改的技巧
- CorelDRAW 2019.0安装教程(带安装包)
- Unity面试题D(Yanlz+...+D模拟面试+...+F高薪就业+...+立钻哥哥+...)
- 解决 Typecho 的 Gravatar 头像显示问题
- 安装apk文件时的常见的错误及解决方法
- Python提取PDF文件中的表格文本保存为Excel文件
- 携程java工资待遇怎么样_【携程旅行网工资|携程旅行网待遇怎么样】-看准网
- [安卓] 硕鼠 网页视频下载工具
- 学习python路中的小栗子(函数篇)