在上篇例子中,存在缺陷

  1. 只能允许Client给Server发消息,Server无法发消息给Client端
  2. Client连接成功之后,Server就关闭了

这篇完善上篇的例子

TCP服务端

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Logger;/*** TCP 服务双向连接* @version 1.0* @author terry* @date 2021/12/17*/
public class TcpServer {public static Logger logger = Logger.getGlobal();private static DataInputStream input;private static DataOutputStream out;public static void main(String[] args) throws IOException {logger.info("服务开始监听。。。");ServerSocket server = new ServerSocket(5002);while (true) {Socket accept = server.accept();logger.info("客户端连接。。。");input = new DataInputStream(accept.getInputStream());out = new DataOutputStream(accept.getOutputStream());String data = input.readUTF();out.writeUTF("hello client!");logger.info("服务端接受的信息:" + data);}/*out.close();input.close();server.close();*/}
}

TCP客户端

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Logger;/*** TCP 客户端双向连接* @version 1.0* @author terry* @date 2021/12/17*/
public class TcpClient {public static Logger logger = Logger.getGlobal();public static void main(String[] args) throws IOException {logger.info("客户端启动。。。");Socket client = new Socket("localhost", 5002);DataOutputStream out = new DataOutputStream(client.getOutputStream());DataInputStream input = new DataInputStream(client.getInputStream());out.writeUTF("hello server!");out.flush();// 未接受消息会阻塞String msg = input.readUTF();logger.info("客户端接受消息:" + msg);out.close();input.close();client.close();}
}

启动顺序 先启动TCP服务端 后启动TCP客户端

TCP 服务端打印:

十二月 18, 2021 11:31:07 上午 com.terry.demo2.TcpServer main
信息: 服务开始监听。。。
十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpServer main
信息: 客户端连接。。。
十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpServer main
信息: 服务端接受的信息:hello server!

TCP 客户端打印:

十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpClient main
信息: 客户端启动。。。
十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpClient main
信息: 客户端接受消息:hello client!

2.Java 网络编程TCP通讯例子 双向发送相关推荐

  1. Java网络编程 ---- TCP 网络通信编程

    视频:[零基础 快速学Java]韩顺平 零基础30天学会Java 文章目录 1. Socket 2. TCP 网络通信编程 3. 应用案例 1(使用字节流) 4. 应用案例 2(使用字节流) 5. 应 ...

  2. Java网络编程:实现QQ邮件发送客户端

    目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...

  3. java网络编程--TCP程序设计

    一,本章目标 了解Socket和ServerSocker类的作用 掌握ECHO程序开发 将多线程应用在TCP程序上实现多用户操作 二,具体内容 在java网络程序中,客户端只要符合连接的通讯协议,那么 ...

  4. java网络编程TCP传输—流操作—拿到源后的写入动作

    在网络编程中的TCP传输里,拿到Socket的源后,应该怎么进行读写操作呢,下面我列举了两种方法,希望大家帮忙补充···· 1.利用byte数组作为一个缓冲区进行读写 客户端上传 1 //获取sock ...

  5. Java网络编程---TCP通信

    TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信 Java对基于TCP协议的 ...

  6. java网络编程 TCP程序

    在java中,使用Socket完成TCP(传输控制协议)程序开发,使用此类可以方便地建立可靠的,双向的,持续的,点对点通信连接 服务端: ServerSocket    程序段:Socket Serv ...

  7. Java网络编程 - TCP通信

    文章目录 TCP通信 快速入门(一发一收) 编写客户端代码 编写服务器代码 多发多收 多发多收(同时接受多个客户端) 线程池优化 TCP通信 快速入门(一发一收) TCP协议回顾: TCP是一种面向连 ...

  8. Java 网络编程TCP协议之发送数据和接收数据的详解

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

  9. java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计

    [JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...

最新文章

  1. Linux pwn入门教程——CTF比赛
  2. Linux操作系统报:read-only file system
  3. try { } catch{ } finally{ } 执行顺序总结
  4. Sql Group by 使用
  5. java 日期是否合法_java 中 Date 类型快判断日期是否合法.
  6. 以NETSCREEN-50为例,说明防火墙配置步骤
  7. H264 CAVLC 研究
  8. Git Bash中npm配置,加速下载等作用
  9. 带有en的单词有哪些_律师不只是lawyer,还有barrister等其他单词
  10. 模拟钟表的手机软件_手机时钟软件推荐
  11. 6678-GPIO基础(1)
  12. C语言 - MISRA代码规范
  13. a4的尺寸大小转换为像素
  14. C++青少年编程课程体系与教案
  15. 从 Google Play 下载 APK 文件
  16. 视频剪辑一定要知道这6个免费视频素材库
  17. ps铅笔素描效果教程
  18. 非主流闪图头像教程:动感头像效果
  19. 【读书】迟子建《额尔古纳河右岸》 摘录
  20. 正则表达式切掉log日志前面不需要的内容

热门文章

  1. python异常处理输入不是整数_Python异常处理
  2. 哪些港口需要办理几内亚比绍CEE认证?
  3. ZZULIOJ--1227: 漂亮菱形
  4. IE浏览器调试默认是IE 7版本
  5. 2018年12月云栖技术活动最全资料汇总:50+直播与Meetup分享
  6. 小白学python爬虫:1.找到数据
  7. 一本好的PHP自学书籍-和我一起轻松学习PHP,推荐给你
  8. 七牛云直播SDK之推流端快速开发
  9. Z世代工程文化:如何带好95后工程师组成的开发团队?
  10. 游戏几个常见的统计指标