client端
package com.huayang.Bio;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class BioClient {
public static void main(String[] args) {
BufferedReader in = null;
PrintWriter out = null;
Socket socket = null;
try {
socket = new Socket("127.0.0.1", 10001);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = null;
out = new PrintWriter(socket.getOutputStream(), true);
out.println("query time order");
s = in.readLine();
System.out.println("接收到服务端消息:" + s);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
out.close();
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
server端:
package com.huayang.Bio;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class BioServer {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(10001);
System.out.println("the time server is start in port : 10001");
Socket socket = null;
while (true) {
socket = serverSocket.accept();
new Thread(new ServerHandler(socket)).start();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != serverSocket) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
handler:
package com.huayang.Bio;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;
public class ServerHandler implements Runnable {
private Socket socket;
public ServerHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader bufferedReader = null;
PrintWriter out = null;
try {
while (true) {
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
String currentTime = "";
String body = null;
body = bufferedReader.readLine();
if (body == null)
break;
currentTime = "query time order".equalsIgnoreCase(body) ?
new Date(System.currentTimeMillis()).toString() : "bad order";
System.out.println("服务端接收到 query time order 命令 " + currentTime);
out.println(currentTime);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
out.close();
}
if (this.socket != null) {
try {
this.socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
分享到:
相关推荐
《Socket 之 BIO、NIO、Netty 简单实现》博客附件。 博客地址:https://blog.csdn.net/Supreme_Sir/article/details/112725728
java原生实现的RPC框架,使用技术:JDK动态代理、Socket通信(BIO方式)、反射、注解、Java序列化
通过架构实现以BIO、NIO为核心的I/O模型的ServerSocket,解构HTTP1.1协议内容,并且封装简易的API以达到类似Tomcat、Servlet的效果。 业务逻辑上通过Flyboot框架,实现对接口的解析以及系列逻辑判断,将最终的结果以...
本程序采用java语言编写,分别编写了客户端代码,服务端代码。使用方法:更改程序中的ip地址,改为自己的ip。具体功能:实现简单的数据传输。
相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。 事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精 心的设计...
群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞) 2)实现多人群聊 3)服务器端:可以监测用户上线,离线,并实现消息转发功能 4)客户端:通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受...
观点抽取本质上就是命名实体识别NER任务,只不过不需要很复杂BIO去识别出实体的类型,如地点机构人物,只用简单的BIO就行了。所以要先对数据进行预处理成以BIO标注格式的数据。但首先也要先将之前我们下载好的...
一个快速,简单的分布式发布-订阅消息系统(mq) Nanomsg nanomsg是一个消息通信组件 - zeromq的作者之一用C语言重写的通信框架, OpenMQ Open-MQ 是一个开源的消息中间件,类似IBM的 WebSphere MQ(MQSeries),采用 ...
滥用用户空间块设备驱动程序这是一个Linux内核模块,用于在用户空间中实现块设备。 这项工作主要基于Zachary Amsden的补丁。如何“ make”执行一些简单的测试脚本。内核模块参数max_abuse:滥用设备的最大数量max_...
示例:简易的客户端服务器通信 集合 集合框架总览 -、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系详解 HashMap LinkedHashMap TreeMap WeakHashMap Hashtable Collection 集合体系详解 ...
一。概念问题 1.1双边和非双边 双向和非双向是进程在访问数据的...IO(BIO)同步双向IO NIO异步非双向IO(使用线程池来进行实现) 1.4 IO的概念 BIO适用于连接数量比较小,而且是固定的架构,程序了解起来也比较简单。
5.3 版本1:简单的实现 5.4 版本2:模拟BNF语法——复杂度O(N) 5.5 版本3:第一个复杂度O(log N)的优化 5.6 版本4:第二次优化:避免重复验证 5.7 版本5:第三次优化:复杂度 O(1) 5.8 版本 6:第四次优化:缓存...
这个工作不再是简单的读懂几本密码学专著和协议文档那么简单,而是要理解所有这些算法、标准和协议文档的每一个细节,并用你可能很熟悉的C语言字符一个一个去实现这些定义和过程。我们不知道你将需要多少时间来完成...
RocketMQ|[Spring Cloud Alibaba(五)RocketMQ 异步通信实现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README5.md) ### 其它 模块名称|主要内容 ---|--- leetcode|[力扣题解...
家庭助理具有家庭自动化的配置。 在示例”页面上精选家庭助理版本:0.114.0概述我利用家庭助手来桥接和自动化我所有的家庭自动化产品。... 我已经将家庭自动化实践扩展到ESPHome平台,以实现电力监控自动化以及为Bio