今天写了个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 = ; 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();
} 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[];
int r = inStr.read(b);
if(r>-){
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

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. 不通用版(从SVN取版本,通过MAVEN生成JAVA包,通过SALTSTACK传送到远程服务器并自动重启TOMCAT服务)PYTHON代码

    从昨晚写到今天啊, 第一版测试成功了. PHP和JAVA的更新相对来说,PHP的自动化更新是简单多啦~~ 当然,这只是运维工作当中的一环~~ #!/usr/bin/env python # -*- c ...

  2. (2015年郑州轻工业学院ACM校赛题)I 旋转图像

    矩阵旋转,写一个转 90° 的函数就行了, 注意每次要将 长和宽的值进行交换就行了. #include<stdio.h> #include<iostream> #include ...

  3. Hbase与RDBMS

    hbase与传统关系数据库区别 hbase适合于非结构化数据存储的数据库.介于Map Entry 和 DB row之间的一种数据存储方式. 1. 数据类型: HBase只有简单的字符串类型,它只保存字 ...

  4. 自定义H5页面规范

    查看详情页也可支持自定义H5页面,用来展示更多内容. 交互规范 分屏切换,支持横向和竖向,滑动指引需清晰 若详情页加载较慢,需设计loading页,给予用户友好的提示 如有视频,需在底部加上“建议在W ...

  5. nagios 实现Mysql 主从同步状态的监控

    一.系统环境 主机名 IP nagios 192.168.15.111 mysql_s 192.168.15.21 二.操作步骤 2.1 mysql_s端的配置 2.1.1 编写check_mysql ...

  6. COM编程入门第一部分——什么是COM,如何使用COM

    本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念.内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件.本文不包括如何编写自己的COM对象和接口. CO ...

  7. ubuntu 下操作文件夹,出现Permission denied的解决的方法

    今天遇到个诡异问题,向一个文件夹(myResources)粘贴文件的时候,出现这样一个提示 Permission denied 是权限没设好,仅仅是拷贝粘贴一个文件,怎么会这样? 解决的办法: $ s ...

  8. sql 处理以字符隔开的字符串(类似split)

    sql 处理以字符隔开的字符串(类似split)的处理方法. CREATE PROCEDURE dbo.Vip_SendMails @userids varchar(MAX), ), ), @c va ...

  9. Java基础知识强化28:Scanner类之Scanner类的概述

    1.Scanner概述:         JDK5以后用于获取用户的键盘输入 2.Scanner的构造方法:         public Scanner (InputStream  source) ...

  10. Linux用户磁盘配额

    一:内核中支持QUOTA: [root@localhost /]# grep  CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64 CONFIG_QUOTA ...