TCP是一个全双工协议,数据通信允许数据同时在两个方向上传输,因此全双工是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。我们来做一个简单的实现

Server端

public class ServerSocketDemo1 {static ExecutorService executorService=Executors.newFixedThreadPool(1000);public static void main(String[] args) {ServerSocket serverSocket=null;try {//服务端一定需要去监听一个端口号,ip默认就是本机的ip地址//ip:portserverSocket=new ServerSocket(8080);while(true) {//阻塞(连接阻塞)Socket socket = serverSocket.accept(); //接收客户端的连接(阻塞)executorService.execute(new SocketThread(socket));}/*//拿到输入流(阻塞, read/write阻塞)BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//输出流PrintWriter printWriter=new PrintWriter(socket.getOutputStream());//通过控制台拿到数据BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));System.out.println("Client:"+in.readLine()); //获得输入流的信息String line=sin.readLine(); //获得控制台输入的数据while(!line.equals("bye")){printWriter.println(line); //写回到客户端printWriter.flush();System.out.println("client:"+in.readLine()); //读取客户端传过来的数据line=sin.readLine(); //重新读取控制台的数据}System.out.println(in.readLine()); //获得客户端的输入信息*/} catch (IOException e) {e.printStackTrace();}}}

Client端

public class ClientSocketDemo1 {public static void main(String[] args) {try {//找到目标的ip和端口Socket socket=new Socket("localhost",8080);//在当前链接上写入输入PrintWriter out=new PrintWriter(socket.getOutputStream(),true);//控制台的输入流BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));//拿到输入流BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));String readline=sin.readLine(); //获得控制台的输入while(!readline.equals("bye")){out.println(readline);System.out.println("Server:"+in.readLine());readline=sin.readLine(); //重新获取}} catch (IOException e) {e.printStackTrace();}}
}

基于TCP实现双向通信对话功能相关推荐

  1. 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...

    在一个基于面向服务的分布式环境中,借助一个标准的.平台无关的Communication Infrastructure,各个Service通过SOAP Message实现相互之间的交互.这个交互的过程实 ...

  2. 基于python的聊天软件的设计与实现_Python基于TCP实现会聊天的小机器人功能示例...

    本文实例讲述了Python基于TCP实现会聊天的小机器人功能.分享给大家供大家参考,具体如下: 一 代码 1.服务端程序 import socket words ={'how are you?':'F ...

  3. 从入门到入土:基于Python采用TCP协议实现通信功能的程序

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  4. 从入门到入土:基于C语言采用TCP协议实现通信功能的程序(仅有代码)

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. python实现淘宝客服自动回复语_Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例...

    本文实例讲述了Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能.分享给大家供大家参考,具体如下: [吐槽] 网上的代码害死人,看着都写的言之凿凿,可运行就是有问题. 有些 ...

  6. 基于Vue2实现的仿手机QQapp(支持对话功能,滑动删除....)—— 聊聊开发过程中踩到的一些坑与解决方案,以及个人感悟...

    使用Vue2进行的仿手机QQ的webapp的制作,在ui上,参考了设计师kaokao的作品,作品由个人独立开发,源码中进行了详细的注释. 由于自己也是初学Vue2,所以注释写的不够精简,请见谅. 目前 ...

  7. 【学习笔记】在windows下进行基于TCP的本地客户端和服务端socket通信

    文章目录 socket介绍 java中使用socket 基于tcp的socket通信 使用ServerSocket类创建一个web服务器:(java) windows下的基于tcp的socket编程( ...

  8. socket网络编程 java_Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

  9. 基于TCP/UDP的P2P网络通信协议研究与实现

    此章节是理论知识,下个章节会奉献源码 摘    要 对等式网络(peer-to-peer,简称P2P),又称点对点技术,是一种实现网络中不同主机直接通信的技术.在物联网的应用中,大量的设备需要能进行点 ...

最新文章

  1. 刘宇凡:群生?群死?群P?
  2. 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法
  3. delphi 到出execl2010 文件损坏_Win7系统出现explorer.exe损坏的图像的解决方法是什么?...
  4. 基金小窍门:如何判断基金的赚与赔
  5. 2015电大c语言,2015电大本科C语言程序设计A试题汇总.doc
  6. 曝iPhone 12 Pro耗电异常,没开启任何应用电量也急剧下降
  7. mysql函数 字符长度限制_MySQL中使用group_concat()函数数据字符过长报错的问题解决方法...
  8. 花书+吴恩达深度学习(五)正则化方法(防止过拟合)
  9. linux内核调度,Linux内核的三种调度策略
  10. url-pattern配置技巧
  11. a标签点击不跳转的几种方法
  12. 从数据库查询数据并输出到前台页面
  13. HTML前端在线购书商城,基于HTML css的商城购物前端模板
  14. 2017年12月HCNP考试易错题汇总
  15. 元素出栈入栈顺序是否合法
  16. 2021-01-27 大数据课程笔记 day7
  17. /etc/xinetd.d 的使用
  18. 方根法公式_初中数学根式运算法则公式
  19. python红楼梦人物词频统计_用R进行文本分析初探——以《红楼梦》为例
  20. IEEE之后,学术政治化会成为人类的“潘多拉魔盒”吗?

热门文章

  1. zookeeper学习一
  2. linux-VM无法连接mks套接字连接尝试次数太多
  3. 用word发布CSDN文章
  4. 【python】dist-packages和site-packages的区别
  5. 看看C# 6.0中那些语法糖都干了些什么(上篇)
  6. express开发实例
  7. meta http-equiv=X-UA-Compatible content=IE=7 /意思是将IE8用IE7进行渲染,使网页在IE8下正常...
  8. 委托、Lambda表达式和事件
  9. Nodejs读写文件
  10. 64位服务器IIS不能识别32位framework版本。IIS没有Asp.net切换界面的解决办法。