Socket心跳包保持长连接
来源:互联网 发布:linux 文件读权限 编辑:程序博客网 时间:2024/04/28 00:59
package com.sk.irwifi;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;/** * Created by XYSM on 2017/9/19. */public class Connect { private static final ThreadLocal<Socket> threadConnect = new ThreadLocal<Socket>(); private static final String HOST = "192.168.1.102"; private static final int PORT = 8899; private static Socket client; private static OutputStream outStr = null; private static InputStream inStr = null; private static Thread tRecv = new Thread(new RecvThread()); private static Thread tKeep = new Thread(new KeepAliveThread()); public static void connect() throws UnknownHostException, IOException { client = threadConnect.get(); if(client == null){ client = new Socket(HOST, PORT); threadConnect.set(client); tKeep.start(); System.out.println("========心跳连接开始!========"); } //获取套接字的输出流 outStr = client.getOutputStream(); //获取套接字的输入流 inStr = client.getInputStream(); } /** *断开连接 * */ public static void disconnect() { try { outStr.close(); inStr.close(); client.close(); } catch (IOException e) { e.printStackTrace(); } } private static class KeepAliveThread implements Runnable { public void run() { try { System.out.println("=====================开始发送心跳包=============="); while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("发送心跳数据包"); outStr.write("send heart beat data package!".getBytes()); } } catch (IOException e) { e.printStackTrace(); } } } private static class RecvThread implements Runnable { public void run() { try { System.out.println("==============开始接收数据==============="); while (true) { byte[] b = new byte[1024]; int len = inStr.read(b); if(len>0){ //设置编码 String str = new String(b, "utf-8"); System.out.println( str ); } } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { try { Connect.connect(); tRecv.start(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
效果如下:
阅读全文
0 0
- Socket心跳包保持长连接
- Socket 长连接 心跳包
- 为什么保持长连接需要心跳包?
- 局域网SOCKET通信(TCP)需要心跳包来保持长连接么
- 局域网SOCKET通信(TCP)需要心跳包来保持长连接么
- 局域网SOCKET通信(TCP)需要心跳包来保持长连接么
- 关于socket长连接的心跳包
- 关于socket长连接的心跳包
- 关于socket长连接的心跳包
- 关于socket长连接的心跳包
- 关于socket长连接的心跳包
- socket长连接的心跳包
- 关于socket长连接的心跳包
- 关于socket长连接的心跳包
- 关于socket长连接的心跳包
- 关于socket长连接的心跳包
- Java Socket长连接异步单工保持心跳
- 【Socket】关于socket长连接的心跳包
- 用C++实现快排(思路+代码)
- 未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法
- 【kong系列十一】之JWT插件RSA256非对称加密使用
- Unity5.x新依赖打包及加载
- oracle之数据库事务的边界(DML,DDL,DCL)
- Socket心跳包保持长连接
- 设置背景图片的两种方式,并解决手机端背景图片高度自适应问题
- JAVA 模拟瞬间高并发
- Okhttp 源码分析(1)----流程分析
- mysql日志管理
- HDU1828-Picture
- ImageView相册案例
- charset和pageEncoding的区别
- PythonStock(6):使用 dataTable+python+Tornado 实现服务端多字段查询