(借鉴备忘)直接上代码:

client:

import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.Socket;
import java.nio.CharBuffer;public class TestSocketClient {public static void main(String[] args) {// TODO Auto-generated method stubnew TestSocketClient().start();}class SendThread extends Thread{private Socket socket;public SendThread(Socket socket){this.socket=socket;}@Overridepublic void run(){while(true){try{Thread.sleep(1000); String send="<SOAP-ENV:Envelope>"+System.currentTimeMillis()+"</SOAP-ENV:Envelope>";PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));pw.write(send);pw.flush();}catch(Exception e){e.printStackTrace();}}}}class ReceiveThread extends Thread{private Socket socket;public ReceiveThread(Socket socket){this.socket=socket;}@Overridepublic 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();//设置从0到刚刚读取到的位置System.out.println("client:"+charbuffer.toString());}}catch(Exception e){e.printStackTrace();}}}}public void start(){try{Socket socket=new Socket("127.0.0.1",18889);new SendThread(socket).start();new ReceiveThread(socket).start();}catch(Exception e){e.printStackTrace();}}
}

server:

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;public class TestSocketServer {private final static String SOAP_BEGIN = "<SOAP-ENV:Envelope"; private final static String SOAP_END = "</SOAP-ENV:Envelope>"; public static void main(String[] args) {// TODO Auto-generated method stubTestSocketServer testserver=new TestSocketServer();testserver.start();}public void start(){try{ServerSocket serversocket=new ServerSocket(18889);while(true){Socket socket=serversocket.accept();new SocketThread(socket).start();}}catch(Exception e){e.printStackTrace();}}class SocketThread extends Thread{private Socket socket;private String temp;public SocketThread(Socket socket){this.socket=socket;}public Socket getsocket(){return this.socket;}public void setsocjet(Socket socket){this.socket=socket;}@Overridepublic 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){//System.out.println(new Date().toLocaleString()+"server:"+temp);temp="";writer.write("receive the soap message hahahah");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){try{if(!socket.isClosed()){socket.close();}}catch(Exception e){e.printStackTrace();}}}}}}

(java)socket全双工长连接通信实例相关推荐

  1. java socket建立长连接_Java Web项目中使用Socket通信多线程、长连接的方法

    很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接 ...

  2. Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>

    2021SC@SDUSC Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接 实例要求: Http 协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 要求 ...

  3. 微信 短连接 长连接服务器,Socket,http长连接与短连接

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层,传输层和应用层. 在网络层有IP协议,ICMP协议,ARP协议,RARP协议和BOOTP协议. 在传输层中有:TCP协议与UDP协议. 在 ...

  4. Android开发:长连接通信设计与实现

    一.前言 Android长连接应用于服务器需要主动通知客户端的一些场景,例如推送消息和即时通讯.除了接入第三方SDK来实现外,在业务要求不是很高的情况下,完全可以自己编写一套实现方案. 二.正文 An ...

  5. java如何实现Socket的长连接和短连接

    讨论Socket必讨论长连接和短连接 一.长连接和短连接的概念 1.长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接:后者是每次请求,都新建 ...

  6. Java Socket 全双工通信

    最初在认识上有这样的误区,认为只有在 netty,nio 这样的多路复用 IO 模型时,读写才不会相互阻塞,才可以实现高效的双向通信,但实际上,Java Socket 是全双工的:在任意时刻,线路上存 ...

  7. android socket 长连接_TCP/IP,http,socket,长连接,短连接

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...

  8. http和socket之长连接和短连接区别

    TCP/IP  TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.  在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.  在传输层中有TCP协议与UDP协议. ...

  9. socket解读,http和socket之长连接和短连接区别!

    TCP/IP  TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.  在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.  在传输层中有TCP协议与UDP协议. ...

最新文章

  1. 模拟退火 HDU - 2899 Strange Function
  2. 经典的《JavaScript 权威指南》中的“对象”不经典
  3. Linux 文件夹含义(转)
  4. 原码的一位乘法和补码的一位乘法对比
  5. Java实现根据地理位置获取经纬度
  6. XML Schema 基本结构
  7. 入门干货之用DVG打造你的项目主页-Docfx、Vs、Github
  8. .NET 的 WCF 和 WebService 有什么区别?(转载)
  9. unity案例 mysql lua_通过Xlua实现unity热更新的一个小例子
  10. 五、扩展Orchard(五) Writing a Content Part
  11. java jar 启动项目,SpringBoot项目运行jar包启动的步骤流程解析
  12. 吊打面试官!Redis 常见面试题请收好 | 原力计划
  13. 没有配置默认路由_网络路由选择原理
  14. javascript 对象(四)
  15. php返回中文是 u,php json_encode总是返回unicode字符 u.问题 解决
  16. 吉米多维奇数学分析习题集学习指引
  17. Gradle下载及安装,配置IDEA
  18. deepfacelab安卓版_DeepFaceLab2020版本下载
  19. 贴吧怎么引流_教您如何快速搭建自己的引流池-万能的小胡
  20. 【听说隔壁老王开始学编程了?】

热门文章

  1. python随机森林筛选变量_用随机森林分类器和GBDT进行特征筛选
  2. Excel导入后的后台响应数据前端已经接收但是响应不出来
  3. FPGA_demo2:按键测试
  4. flex布局练习题,面试必备,持续更新建议收藏~
  5. linux ftp去不了文件损坏,Linux下使用ftp上传压缩文件,windows下载打开损坏问题
  6. 祝福老朋友今天的收获
  7. U盘EFI分区删不掉怎么办
  8. 视频断点续传+java视频
  9. 我们需要多大的电视?
  10. 盘点最令人难忘的十大谍战剧经典