Java写的保持socket长连接客户端代码
2017-10-12 15:09
363 查看
public class Client { private Socket socket = null; private OutputStream os = null; private InputStream is = null; public static void main(String[] args) { new Client().new SocketThread().start(); } /** * 发送心跳包 */ public void sendHeartbeat() { try { String heartbeat = "heart:00001;"; new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(10 * 1000);// 10s发送一次心跳 os.write(heartbeat.getBytes()); os.flush(); } catch (Exception e) { e.printStackTrace(); } } } }).start(); } catch (Exception e) { e.printStackTrace(); } } private class SocketThread extends Thread { @Override public void run() { long startTime = System.currentTimeMillis(); sendHeartbeat(); while (true) { try { if (socket == null || socket.isClosed()) { socket = new Socket("localhost", 8080); // 连接socket os = socket.getOutputStream(); } Thread.sleep(100); is = socket.getInputStream(); int size = is.available(); if (size <= 0) { if ((System.currentTimeMillis() - startTime) > 3 * 10 * 1000) { // 如果超过30秒没有收到服务器发回来的信息,说明socket连接可能已经被远程服务器关闭 socket.close(); // 这时候可以关闭socket连接 startTime = System.currentTimeMillis(); } continue; } else { startTime = System.currentTimeMillis(); } byte[] resp = new byte[size]; is.read(resp); String response = new String(resp, "utf-8"); System.out.println(response); } catch (Exception e) { e.printStackTrace(); try { socket.close(); is.close(); os.close(); } catch (IOException e1) { 888e e1.printStackTrace(); } } } } } }
相关文章推荐
- Java NIO SocketChannel客户端例子(支持连接失败后自动重连)
- C#客户端与Java程序使用socket连接并通信的兼容问题
- android客户端和java服务端之间用socket来传输图片(示例代码)
- 什么是socket?什么是socket的长、短连接?java如何简单实现socket客户端和服务器?
- java实现socket客户端连接服务端
- Java socket长连接代码实现
- java写的Socket客户端和服务端通信,经验证可以执行的代码,并添加了很多注释
- Java编程Socket实现多个客户端连接同一个服务端代码
- java socket 进阶话题一: socket 客户端连接管理
- java---socket编程之客户端代码
- Java socket长连接代码实现
- 跪求java 程序 swing加socket 做的反向连接远程控制软件,公司要我做我只用反向连接做了一个屏幕截取的,可是带事件控制的做不出报错一大堆,我都卡住了一周了。无奈啊!跪求java反向连接 带事件控制的完整代码!
- Java Socket实现多个客户端连接同一个服务端
- Java Socket长连接异步单工保持心跳
- java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&服务端代码
- Java Socket通讯客户端代码详解
- MemCached的安装和JAVA客户端连接Memcached示例代码
- java服务端客户端交互系列(一)socket连接
- android客户端和java服务端之间用socket来传输图片(示例代码)