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

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.net.Socket;
  5. import java.net.UnknownHostException;
  6.  
  7. /**
  8. * @author 某家:
  9. * @version 创建时间:2015年8月17日 下午3:04:14
  10. * 类说明
  11. */
  12. public class Connect {
  13. private static final ThreadLocal<Socket> threadConnect = new ThreadLocal<Socket>();
  14.  
  15. private static final String HOST = "192.168.1.120";
  16.  
  17. private static final int PORT = ;
  18.  
  19. private static Socket client;
  20.  
  21. private static OutputStream outStr = null;
  22.  
  23. private static InputStream inStr = null;
  24.  
  25. private static Thread tRecv = new Thread(new RecvThread());
  26. private static Thread tKeep = new Thread(new KeepThread());
  27.  
  28. public static void connect() throws UnknownHostException, IOException {
  29. client = threadConnect.get();
  30. if(client == null){
  31. client = new Socket(HOST, PORT);
  32. threadConnect.set(client);
  33. tKeep.start();
  34. System.out.println("========链接开始!========");
  35. }
  36. outStr = client.getOutputStream();
  37. inStr = client.getInputStream();
  38. }
  39.  
  40. public static void disconnect() {
  41. try {
  42. outStr.close();
  43. inStr.close();
  44. client.close();
  45. } catch (IOException e) {
  46. e.printStackTrace();
  47. }
  48.  
  49. }
  50. private static class KeepThread implements Runnable {
  51. public void run() {
  52. try {
  53. System.out.println("=====================开始发送心跳包==============");
  54. while (true) {
  55. try {
  56. Thread.sleep();
  57. } catch (InterruptedException e) {
  58. // TODO Auto-generated catch block
  59. e.printStackTrace();
  60. }
  61. System.out.println("发送心跳数据包");
  62. outStr.write("send heart beat data package !".getBytes());
  63. }
  64. } catch (IOException e) {
  65. e.printStackTrace();
  66. }
  67.  
  68. }
  69. }
  70.  
  71. private static class RecvThread implements Runnable {
  72. public void run() {
  73. try {
  74. System.out.println("==============开始接收数据===============");
  75. while (true) {
  76. byte[] b = new byte[];
  77. int r = inStr.read(b);
  78. if(r>-){
  79. String str = new String(b);
  80. System.out.println( str );
  81. }
  82. }
  83. } catch (IOException e) {
  84. e.printStackTrace();
  85. }
  86.  
  87. }
  88. }
  89.  
  90. public static void main(String[] args) {
  91. try {
  92. Connect.connect();
  93. tRecv.start();
  94. } catch (UnknownHostException e) {
  95. // TODO Auto-generated catch block
  96. e.printStackTrace();
  97. } catch (IOException e) {
  98. // TODO Auto-generated catch block
  99. e.printStackTrace();
  100. }
  101. }
  102. }

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

调试工具下载地址

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

java Socket 长连接 心跳包 客户端 信息收发 demo的更多相关文章

  1. java socket 长连接 短连接

    长连接 是一旦一个客户端登陆上服务器,其与服务器之间的连接就不关闭,不管他们之间进行了多少次交易,直到客户端退出登陆或网络出现故障.这种技术在联机交易系统实现有利于提高效率. 短连接是客户端每发一个请 ...

  2. Java Socket长连接示例代码

    SocketListenerPusher.java代码如下: import java.io.IOException; import java.net.InetSocketAddress; import ...

  3. Java socket长连接代码实现

    服务器端程序: import java.io.*; import java.net.*; import java.util.*; public class ChatServer { boolean s ...

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

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

  5. 基于心跳的socket长连接

    http://coach.iteye.com/blog/2024444 基于心跳的socket长连接 博客分类: http socket 案例: 心跳: socket模拟网页的报文连接某个网站,创建t ...

  6. 关于Socket建立长连接遇到的bug信息

    下面是本人在Socket连接的开发中遇到的bug总结 1."远程服务器关闭了Socket长连接'的错误信息 2.关于"kCFStreamNetworkServiceTypeVoIP ...

  7. Java Socket 网络编程心跳设计概念

    Java Socket 网络编程心跳设计概念   1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...

  8. [转]Android TCP长连接 心跳机制及实现

    背景知识 智能手机上的长连接心跳和在Internet上的长连接心跳有什么不同 Android系统的推送和iOS的推送有什么区别 几种推送的实现方式 协议 1XMPP简介 2 MQTT简介 3移动端消息 ...

  9. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...

随机推荐

  1. 关于LEA指令(单周期就可以做简单的算术计算)

    堆栈种分配的局部变量所谓的“标号”,你以为是什么?(都是那些该死的宏惹的祸,大家要都是老老实实写代码,就不会有这些疑问了).      比如你用local在栈上定义了一个局部变量LocalVar,你知 ...

  2. LINUX下中文语言包的安装(转)

    在安装盘上已经有各种语言包了,我们只需要找到他们,并安装就可以了.中文的是fonts-chinese-3.02-9.6.el5.noarch.rpmfonts-ISO8859-2-75dpi-1.0- ...

  3. where T:class 泛型类型约束

    对于一个定义泛型类型为参数的函数,如果调用时传入的对象为T对象或者为T的子类,在函数体内部如果需要使用T的属性的方法时,我们可以给这个泛型增加约束: 类的定义 public class Product ...

  4. SQL 2008 如何配置远程连接

    初次接触sql2008 相比05 改观还是挺大的 在配置方面 如何打开"远程连接" 成了最棘手的   到网上找了大半天资料    依然云里雾里 参考网上的众多资料 结合本人的实际经 ...

  5. HDOJ(HDU) 2090 算菜价(简单水题、)

    Problem Description 妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐.现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵. Input ...

  6. Selenium webdriver 元素操作

    本来这些东西网上一搜一大堆,但是本着收集的精神,整理一份放着吧!哈!哈!哈! 1. 输入框(text field or textarea) WebElement element = driver.fi ...

  7. 中国四大资产管理公司 ACM

    一,来历和主要业务 国家于1999年成立了四家直属国务院的资产管理公司:中国东方资产管理公司.中国信达资产管理公司.中国华融资产管理公司.中国长城资产管理公司.由于资产公司一般是是为适应体制转轨或防范 ...

  8. Mysql 5.6主从同步配置与解决方案

    主库IP:192.168.1.10 从库IP:192.168.1.11 centos的mysql配置文件在:/etc/my.cnf 1.主库配置编辑my.cnf: # 启用二进制日志 log_bin ...

  9. LOAD DATA INFILE Syntax--官方

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_n ...

  10. yiiwheels.widgets.datetimepicker.WhDateTimePicker language

    参考 https://github.com/2amigos/yiiwheels/blob/master/widgets/datetimepicker/WhDateTimePicker.php publ ...