java socket长连接服务端
来源:互联网 发布:xd是什么软件 编辑:程序博客网 时间:2024/05/21 06:16
java socket长连接服务端的实现
网络编程都是最底层都是基于socket的,鉴于客户端需要一直发送消息,使用短连接就不适合了,因为建立socket连接后发送完数据又马上断开连接。而长连接通过客户端的心跳机制一直保持连接,不管当前是否接收和发送数据。长连接服务端代码如下:
package com.starit.ipran.socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.starit.ipran.kafka.KafkaUtils;import com.starit.ipran.load.Constants;import com.starit.ipran.model.IpranAlarm;import com.starit.ipran.util.EncodeUtils;public class SocketServer {private final static Logger LOGGER = LoggerFactory.getLogger(SocketServer.class); public void startAction(){ ServerSocket serverSocket=null; try { serverSocket=new ServerSocket(Constants.SOCKET_PORT); //端口号 LOGGER.info("服务端服务启动监听:"); //通过死循环开启长连接,开启线程去处理消息 while(true){ Socket socket=serverSocket.accept(); new Thread(new MyRuns(socket)).start(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (serverSocket!=null) { serverSocket.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } class MyRuns implements Runnable{ Socket socket; BufferedReader reader; BufferedWriter writer; public MyRuns(Socket socket) { super(); this.socket = socket; } public void run() { try { reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//读取客户端消息 writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//向客户端写消息 String lineString=""; while(!(lineString=reader.readLine()).equals("bye")){ LOGGER.info("收到来自客户端的发送的消息是:" + lineString); writer.write("服务器返回:"+lineString+"\n"); writer.flush(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (reader!=null) { reader.close(); } if (writer!=null) { writer.close(); } if (socket!=null) { socket.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } } }
下面是客户端程序:
package www.socket.test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;public class Client {public static void main(String[] args) { Client client=new Client(); client.startAction(); } void readSocketInfo(BufferedReader reader){ new Thread(new MyRuns(reader)).start(); } class MyRuns implements Runnable{ BufferedReader reader; public MyRuns(BufferedReader reader) { super(); this.reader = reader; } public void run() { try { String lineString=""; while( (lineString = reader.readLine())!=null ){ System.out.println(lineString); } } catch (Exception e) { e.printStackTrace(); } } } public void startAction(){ Socket socket=null; BufferedReader reader=null; BufferedWriter writer=null; BufferedReader reader2=null; try { socket=new Socket("127.0.0.1", 10000); reader = new BufferedReader(new InputStreamReader(System.in)); reader2=new BufferedReader(new InputStreamReader(socket.getInputStream())); writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); readSocketInfo(reader2); String lineString=""; while(!(lineString=reader.readLine()).equals("exit")){ writer.write(lineString+"\n"); writer.flush(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (reader!=null) { reader.close(); } if (writer!=null) { writer.close(); } if (socket!=null) { socket.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } }
阅读全文
1 0
- java socket长连接服务端
- socket server 长连接服务端
- java socket 长连接
- java Socket长连接
- java socket 长连接
- Java Socket长连接
- Java Socket 长连接通信
- java socket保持长连接
- Java Socket长连接实现
- java socket 长连接事例
- Java 心跳 Socket 长连接
- Socket 异步 长连接 多点 服务端代码(C#)
- android中对服务端的长连接【socket】
- nodejs socket长连接服务端和测试客户端
- Android客户端 C#服务端 实现socket长连接
- android中对服务端的长连接【socket】
- Socket 长连接 短连接 心跳 JAVA SOCKET编程
- Socket 长连接 短连接 心跳 JAVA SOCKET编程
- 461. Hamming Distance (python + java)
- 最小费用流
- 《零基础入门学习Python》学习过程笔记【31pickle对文件中的数据进行提取等操作】(没看)
- hdu 5533 计算几何 判断是否为正方形
- 007讲函数与递归
- java socket长连接服务端
- L2-012. 关于堆的判断
- Networking
- swustoj-A interesting game(0194)(博弈)
- 计蒜客 正方形 (dfs好题,具有参考价值)
- 详解科大讯飞语音识别
- 13爬楼梯问题
- L2-013. 红色警报
- VS2008-Addin开发-笔记