在程序中加入自动重连(到服务器)功能 一个网络流收发程序,如何在程序中加入自动重连(到服务器)就是当服务器断开了或者网线拔掉了,自动再重新连接上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 捕获异常,每过一定时间,再次连接server直至连上try{}catch(Exception e){ Thread.sleep(1000); reconnect();} 我采用了上述方法,代码如下:try { //连接服务端 new ConnectInfo().setConnectInfo(); socket = new Socket(ConnectInfo.ip, ConnectInfo.port); //socket.close(); System.out.println(socket.isClosed()); out = socket.getOutputStream(); in = socket.getInputStream(); } catch (UnknownHostException e) { System.out.print("Not find host!"); } catch (SocketException e) { try { Thread.sleep(1000); System.out.println("开始试图重连接"); login.reconnect(socket); } catch (InterruptedException e1) { e1.printStackTrace(); } } catch (IOException e) { System.out.print("不能获得Socket的读入于写出错!"); }public void reconnect(Socket socket) { try { socket = new Socket(ConnectInfo.ip, ConnectInfo.port); } catch (UnknownHostException e) { e.printStackTrace(); } catch (SocketException e) { e.printStackTrace(); try { Thread.sleep(1000); System.out.println("开始试图重连接"); reconnect(socket); } catch (InterruptedException e1) { e1.printStackTrace(); } reconnect(socket); } catch (IOException e) { e.printStackTrace(); }运行一段时间,拔掉网线,大概10秒钟,程序中止,显示SocketException :connect reset....请问我错在哪里,正确写法是什么?望指点迷津!!!!! 重连 Socket 后你的 InputStream , outputStream 也要跟着重新获取啊。Socket 断开就意味着上次的状态全都丢失了 , 发送接受的过程完全重来。 还有 reconnect () 中怎么只改变了 局部变量 socket ? 要么修改实例变量,要么返回一个 新 Socket 对象以供 重新获取 OutputStream/InputStream . 关于java数据库开发 Myeclipse 中Junit 单元测试,怎么不可以单个方法执行 jdk的chm帮助文件哪里有下?谢谢 CMD SHELL管道命令问题 请教:奇怪!方法改变对象的属性为什么不起作用? toString()这个方法怎么用?? 求一java写的黑白棋程序 怎么用Applet连接数据库啊? CORBA的初学者问题!!!!!! 请热心JAVA达人帮我翻译几行JAVA到C# 一个判断的问题? 一个初级问题
Thread.sleep(1000);
reconnect();
}
//连接服务端
new ConnectInfo().setConnectInfo();
socket = new Socket(ConnectInfo.ip, ConnectInfo.port);
//socket.close(); System.out.println(socket.isClosed());
out = socket.getOutputStream();
in = socket.getInputStream();
} catch (UnknownHostException e) {
System.out.print("Not find host!"); } catch (SocketException e) {
try {
Thread.sleep(1000);
System.out.println("开始试图重连接");
login.reconnect(socket);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
} catch (IOException e) {
System.out.print("不能获得Socket的读入于写出错!");
}public void reconnect(Socket socket) {
try {
socket = new Socket(ConnectInfo.ip, ConnectInfo.port);
} catch (UnknownHostException e) {
e.printStackTrace(); } catch (SocketException e) {
e.printStackTrace(); try {
Thread.sleep(1000);
System.out.println("开始试图重连接");
reconnect(socket);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
reconnect(socket);
} catch (IOException e) {
e.printStackTrace();
}运行一段时间,拔掉网线,大概10秒钟,程序中止,显示SocketException :connect reset....
请问我错在哪里,正确写法是什么?望指点迷津!!!!!