java长连接socket【转】http://jiewo.iteye.com/blog/1562168
java socket 长连接
博客分类:
- java
- SocketClient.java
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.io.Reader;
- import java.net.Socket;
- import java.net.UnknownHostException;
- import java.nio.CharBuffer;
- import java.util.concurrent.ArrayBlockingQueue;
- import java.util.concurrent.BlockingQueue;
- /*{ user:jiangwh }*/
- public class SocketClient {
- public static final Object locked = new Object();
- public static final BlockingQueue<String> queue = new ArrayBlockingQueue<String>(
- 1024 * 100);
- class SendThread extends Thread{
- private Socket socket;
- public SendThread(Socket socket) {
- this.socket = socket;
- }
- @Override
- public void run() {
- while(true){
- try {
- String send = getSend();
- PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
- pw.write(send);
- pw.flush();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- public String getSend() throws InterruptedException{
- Thread.sleep(1000);
- return "<SOAP-ENV:Envelope>"+System.currentTimeMillis()+"</SOAP-ENV:Envelope>";
- }
- }
- class ReceiveThread extends Thread{
- private Socket socket;
- public ReceiveThread(Socket socket) {
- this.socket = socket;
- }
- @Override
- public void run() {
- while(true){
- try {
- Reader reader = new InputStreamReader(socket.getInputStream());
- CharBuffer charBuffer = CharBuffer.allocate(8192);
- int index = -1;
- while((index=reader.read(charBuffer))!=-1){
- charBuffer.flip();
- System.out.println("client:"+charBuffer.toString());
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- public void start() throws UnknownHostException, IOException{
- Socket socket = new Socket("10.10.148.40",18889);
- new SendThread(socket).start();
- new ReceiveThread(socket).start();
- }
- public static void main(String[] args) throws UnknownHostException, IOException {
- new SocketClient().start();
- }
- }
- SocketServer.java
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.io.Reader;
- import java.io.Writer;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.nio.CharBuffer;
- import java.util.Date;
- /*{user:jiangwh }*/
- public class SocketServer {
- private final static String SOAP_BEGIN = "<SOAP-ENV:Envelope";
- private final static String SOAP_END = "</SOAP-ENV:Envelope>";
- public static void main(String[] args) throws IOException {
- SocketServer socketServer = new SocketServer();
- socketServer.start();
- }
- public void start() throws IOException {
- ServerSocket serverSocket = new ServerSocket(18889);
- while (true) {
- Socket socket = serverSocket.accept();
- new SocketThread(socket).start();
- }
- }
- class SocketThread extends Thread {
- private Socket socket;
- private String temp;
- public Socket getSocket() {
- return socket;
- }
- public void setSocket(Socket socket) {
- this.socket = socket;
- }
- public SocketThread(Socket socket) {
- this.socket = socket;
- }
- public void run() {
- try {
- Reader reader = new InputStreamReader(socket.getInputStream());
- Writer writer = new PrintWriter(new OutputStreamWriter(socket
- .getOutputStream(), "GBK"));
- CharBuffer charBuffer = CharBuffer.allocate(8192);
- int readIndex = -1;
- while ((readIndex = reader.read(charBuffer)) != -1) {
- charBuffer.flip();
- temp += charBuffer.toString();
- if (temp.indexOf(SOAP_BEGIN) != -1
- && temp.indexOf(SOAP_END) != -1) {
- // 传送一个soap报文
- System.out.println(new Date().toLocaleString()+"server:"+temp);
- temp="";
- writer.write("receive the soap message");
- writer.flush();
- } else if (temp.indexOf(SOAP_BEGIN) != -1) {
- // 包含开始,但不包含
- temp = temp.substring(temp.indexOf(SOAP_BEGIN));
- }
- if (temp.length() > 1024 * 16) {
- break;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (socket != null) {
- if (!socket.isClosed()) {
- try {
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
- }
转载于:https://www.cnblogs.com/songtzu/archive/2013/02/04/2891858.html
java长连接socket【转】http://jiewo.iteye.com/blog/1562168相关推荐
- c语言linux TCP长连接 socket收发范例 断开自动重连
原文链接:https://blog.csdn.net/chenhao0568/article/details/103420615 c语言linux TCP长连接 socket收发范例 断开自动重连 改 ...
- thrift java长连接_利用thrift在c++、java和python之间相互调用
转自:http://blog.csdn.net/andy_yf/article/details/7487384 thrift做为跨语言调用的方案有高效,支持语言较多,成熟等优点:代码侵入较强是其弱点. ...
- java 长连接_Java如何实现长连接
实现原理: 长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的. 如果,长时间未发送维持连接包,服务端程序将断开连接. 客户端: Client通过持有Socket的对象,可以随时(使 ...
- java长连接转短连接_java原生程序redis连接(连接池/长连接和短连接)选择问题...
原标题:java原生程序redis连接(连接池/长连接和短连接)选择问题 最近遇到的连接问题我准备从重构的几个程序(redis和mysql)长连接和短连接,以及连接池和单连接等问题用几篇博客来总结下. ...
- java长连接例子_java实现长连接
(); public Client(String serverIp, int port) { this.serverIp=serverIp; this.port=port; } public void ...
- java长连接心跳包_socket中的短连接与长连接,心跳包示例详解
TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三 ...
- Socket 短连接、长连接_YTmarkit的空间_百度空间
Socket 短连接.长连接_YTmarkit的空间_百度空间 Socket 短连接.长连接_YTmarkit的空间_百度空间 Socket 短连接.长连接 socket Socket协议的形象描述 ...
- java hessian rmi_RMI,socket,rpc,hessian,http比较
SOCKET使用时可以指定协议TCP,UDP等: RIM使用JRMP协议,JRMP又是基于TCP/IP: RPC底层使用SOCKET接口,定义了一套远程调用方法: HTTP是建立在TCP上,不是使用S ...
- JAVA网络编程Socket常见问题 【长连接专题】
一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...
最新文章
- tensorflow对应的python版本清单
- Bloom Filter 大规模数据处理利器
- 051_Unicode字符官方标准二
- 使用JProfiler查看GC Roots
- 分布式一致性协议Raft原理与实例
- MyEclipse6.5与Perforce的集成
- 您需要了解的有关默认方法的所有信息
- 【计算机网络复习 物理层】2.1.1 物理层基本概念
- python多线程没有java_Java 多线程启动为什么调用 start() 方法而不是 run() 方法?...
- tornado+websocket+mongodb实现在线视屏文字聊天
- 计算机2010ppt试题,计算机Office2010 PPT试题.doc
- 二、三角高程测量计算(C#语言)
- easyui datagrid deleteRow(删除行)的BUG
- 计算机的键盘有什么意思啊,键盘是什么意思 不是电脑的键盘
- STM32: startup_**.s、Core_cm3.c、宏定义、HAL库
- 关于Windows Server 2012 网络发现启动不了
- python二元函数如何编写,Nelder_Mead算法的简介和用作求解二维函数最小值的Python实现...
- 杨子恒温烘鞋机 W-7 拆解
- K线形态识别_双飞乌鸦
- FAST_LIO_SAM 融入后端优化的FASTLIO SLAM 系统 前端:FAST_LIO2 后端:LIO_SAM
热门文章
- No execution.target specified in your configuration file.
- MySQL my.cnf file - Found option without preceding group
- ubuntu下面的robo3t 使用笔记
- 大话数据结构:散列表
- 数据结构与算法:树与二叉树python实现
- 5.6 稳健最小二乘法
- ALSA(二), makefile, Autotools, premake
- JEPaas代码_((表单)_输入字段值而改变值)
- 摩托车计算机辅助设计,摩托车消声器消声特性及计算机辅助设计研究
- 鼠标形状 - - -放大镜 五指小手