今天写了个socket的测试小程序,代码如下

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;/** * @author 某家: * @version 创建时间:2015年8月17日 下午3:04:14 * 类说明 */
public class Connect {private static final ThreadLocal<Socket> threadConnect = new ThreadLocal<Socket>(); private static final String HOST = "192.168.1.120";private static final int PORT = 8888;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 KeepThread());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 KeepThread 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 r = inStr.read(b);if(r>-1){String str = new String(b);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();}}
}

服务器端直接用的TCP/UDP Socket 调试工具

调试工具下载地址

链接: http://pan.baidu.com/s/1e7vIY 提取码: ipdt

转载于:https://www.cnblogs.com/someonehere/p/4737295.html

java Socket 长连接 心跳包 客户端 信息收发 demo相关推荐

  1. java socket 心跳包_socket中的短连接与长连接,心跳包示例详解

    TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三 ...

  2. java长连接心跳包_socket中的短连接与长连接,心跳包示例详解

    TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三 ...

  3. java socket 长连接事例

    一 .我们知道java的socket是基于TCP的连接,而ServerSocket 的accept()方法是阻塞的,直到有客户端连接到服务器端,我们常用多线程的方式来实现服务器端响应多个客户端,以下是 ...

  4. java Socket长连接

    java socekt 同步套节字编程主要用到java.net.Socket类,通常情况下我们需要socket的长连接模式.其次就是在连接的另一端断开之后需要及时响应. 对于连接的判断,socket提 ...

  5. php 长连接 心跳包,Swoole中的长连接和心跳包

    长连接说简单一点就是不会断的连接 

  6. java socket长连接怎么维持_socket长连接的维持

    import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date;/** * 维持连接的消息对 ...

  7. Android长连接心跳机制

    在写之前,我们首先了解一下为什么android维护长连接需要心跳机制,首先我们知道,维护任何一个长连接都需要心跳机制,客户端发送一个心跳给服务器,服务器给客户端一个心跳应答,这样就形成客户端服务器的一 ...

  8. 【Socket】关于socket长连接的心跳包

    TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 在smack里有个30s发送一个空消息的线程,同样关于心跳包(keepalive) 据网络搜索到的资料解释如下 内网机器如果不主动向外发 ...

  9. 关于socket长连接的心跳包

    出于最近对im研究的兴趣,看到smack里有个30s发送一个空消息的线程,了解了下关于心跳包,keepalive的知识. TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 搜索到的资料解 ...

最新文章

  1. android:关于主工程和library project
  2. JS打印指定区域内容
  3. 广度深度都要,亚马逊是如何推动 Alexa 内生成长的?
  4. EIgen:Matricx和vector类的定义和使用
  5. 手机适配鸿蒙教程,鸿蒙系统支持手机介绍
  6. lfu算法实现java_LFU五种实现方式,从简单到复杂
  7. mysql存储过程灌数据_【mysql实战】存储过程灌入一百万数据
  8. DDMF PluginDoctor Mac - 插件分析器音频质量测试
  9. python---用python实现冒泡排序
  10. Apache Hadoop YARN
  11. Netty:原理架构解析
  12. 微信小程序选项卡功能
  13. Landsat遥感影像下载
  14. Windows系统蓝屏代码分析
  15. 崩坏3区号+86_86的区号是代表中国!那82是代表哪个国家?
  16. GridControl 单元格自动换行
  17. c++ Linux windows学习路线
  18. python go 的区别
  19. 51单片机c语言常用语句详解,51单片机之C语言-4.5基本语句之条件选择语句
  20. 乱码解决(二)——文件转码

热门文章

  1. 为什么有必要对网站开启https?
  2. Arduino ESP8266编程深入要点
  3. mybatis开发常见SQL使用手册
  4. Delphi 的运算符重载(1)
  5. 比特币、莱特币来一发?
  6. could not insert into NHibernate数据库问题解决
  7. WinDbg配置与下载
  8. linux 性能监视命令
  9. 为C# Windows服务添加安装程序
  10. android fitsSystemWindows的使用