Java Socket实现基于BIO的TCP通信
一、BIO
BIO,即同步并阻塞。服务端会在ServerSocket对象的accept方法发生阻塞,当有连接进入的时候,才能继续往下执行;读取数据,调用read方法时,也会发生阻塞。
二、服务端
public class BIOServer {public static void main(String[] args) {try {openServer(8888);} catch (IOException e) {e.printStackTrace();}}private static void openServer(int port) throws IOException {
// 创建ServerSocketServerSocket serverSocket = new ServerSocket();
// 绑定端口serverSocket.bind(new InetSocketAddress(port));System.out.println("BIOServer启动...");while (true){
// 堵塞,等待客户端连接Socket socket = serverSocket.accept();System.out.println("连接成功...");
// 输入流
// BufferedReader是缓冲输入流,InputStreamReader是转换输入流,InputStream是字节输入流BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));String str = null;while ((str = br.readLine()) != null){if("quit".equals(str)){break;}System.out.println(str);}
// 关闭流br.close();
// 关闭socketsocket.close();System.out.println("连接结束...");}// System.out.println("BIOServer关闭...");}}
三、客户端
public class BIOClient {public static void main(String[] args) {try {connect("127.0.0.1", 8888);} catch (IOException e) {e.printStackTrace();}}private static void connect(String hostname, int port) throws IOException {
// 创建socketSocket socket = new Socket();
// 连接socket.connect(new InetSocketAddress(hostname, port));
// 输出流
// BufferedWriter是缓冲输出流,OutputStreamWriter是转换输出流,OutputStream是字节输出流BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));// 标准输入流,从键盘输入BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String str = null;while ((str = br.readLine()) != null){
// 如果从键盘输入quit,则退出循环if ("quit".equals(str)){break;}bw.write(str);
// 需要写换行,因为server端每次读取一行bw.newLine();bw.flush();}// 关闭流br.close();
// 关闭socketsocket.close();}}
Java Socket实现基于BIO的TCP通信相关推荐
- JAVA学习-JAVA实现客户端与服务器端的TCP通信
JAVA实现客户端与服务器端的TCP通信 (JAVA 工程训练阶段一.训练任务三基本通信能力.基本任务3.2javaTCP 通信) 编写两个java application 应用程序,完成以下功能: ...
- Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...
此人博客挺好的,推荐一个! 一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实 ...
- Java Socket编程 - 基于TCP方式的二进制文件传输
一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实现主要功能有以下几点: 1. ...
- JAVA SE学习day_07:异常处理、TCP通信
一.异常中常见的方法 public static void main(String[] args) {System.out.println("程序开始了");try {String ...
- 基于QT的TCP通信
一.简介 TCP通信必须先建立TCP链接,通信端分为客户端和服务器端.QT提供了QTcpServer类和QTcpSocket类用于建立TCP通信应用程序.QTcpServer用于端口监听,建立服务器: ...
- Java Socket实现客户端服务端之间的通信
Java Socket Java Socket编程用于在不同JRE上运行的应用程序之间的通信. Java Socket编程可以是面向连接的或无连接的. Socket和ServerSocket类用于面向 ...
- 暑期JAVA学习(41.1)TCP通信——多发多收消息
TCP通信--多发多收消息 一.使用TCP通信实现:多发多收消息案例 (1)需求 (2)具体要求 (3)具体实现 (4)总结 ①本案例实现了多发多收,那么是否可以同时接收多个客户端的消息? ②本次多发 ...
- Java——网络编程(UDP与TCP通信及实现聊天案例)
目录 1.什么是网络通信协议? 2.TCP/IP协议 3.协议分类 3.1.UDP协议 3.2.TCP协议 4.网络编程三大要素 4.1.协议 4.2.IP地址 4.3.端口号 5.InetAddre ...
- S7-1200PLC 基于以太网的TCP通信
硬件:cpu 1214C 目的:测试TCP通信 软件:Portal V14SP1 1. 硬件组态 插入两台cpu,分配IP地址,并在网络视图下将两个PLC的网口连接起来 PLC_1:192.168.0 ...
最新文章
- linux cat 查看文件内容 不带#号的,Linux下如何不用cat命令读取文件内容
- Gartner2018新兴技术成熟度曲线:人机界线日益模糊!
- 网站预加载进度条的实现
- 代码审查就是在排大便——你懂的!
- 皮一皮:越是拥有越不会炫耀...
- PHP魔术常量trait
- 通过ANT实现jmeter批量执行脚本、生成报告、发送邮件全套build.xml文件
- 虚拟寄存器,虚拟堆栈与真实寄存器,真实堆栈如何对应
- 孙长凯sunck_傅里叶变换红外光谱分析NMDA受体单克隆抗体抗-中国科技论文在线.PDF...
- kafka跨集群同步方案
- 【FLink-未解决】FLink Mertic 冲突 导致 任务挂掉 Namecollision Group allready contains a mertics
- hypermesh10的安装
- Java集合框架使用总结
- java必须会的linux_java程序员必须要学会的linux命令总结(推荐)
- 华为数通 软开 2022校招 面试全过 已开奖
- 《码农翻身》总结整理
- 【漆学军】分享一个自定义K线的指标的源码
- Android中使用SAX方式解析XML文件
- 银联云闪付开发联调步骤向导
- How to Add a Dotted Underline Beneath HTML Text