zoukankan      html  css  js  c++  java
  • java Socket 长连接 心跳包 客户端 信息收发 demo

    今天写了个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

  • 相关阅读:
    SharePoint 2013 中的SQL Server 安全
    SharePoint 2013 的HTML5特性之响应式布局
    SharePoint 2013 一些小技巧
    SharePoint 2013 排错之"Code blocks are not allowed in this file"
    SharePoint 2013 创建搜索中心及搜索设置
    SharePoint 2013 使用PowerShell创建State Service
    SharePoint 2013 内容部署功能简介
    SharePoint 使用PowerShell恢复误删的网站集
    SharePoint 自定义WebPart之间的连接
    linux之misc及使用misc创建字符设备
  • 原文地址:https://www.cnblogs.com/someonehere/p/4737295.html
Copyright © 2011-2022 走看看