java 实现网络通信_利用Java怎么样实现网络通信功能
利用Java怎么样实现网络通信功能
发布时间:2020-11-20 15:19:04
来源:亿速云
阅读:72
作者:Leah
利用Java怎么样实现网络通信功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
方式一:同步阻塞方式(BIO):
服务器端(Server):
package com.ietree.basicskill.socket.mode1;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端
*/
public class Server {
// 端口号
final static int PORT = 8765;
public static void main(String[] args) {
ServerSocket server = null;
try {
server = new ServerSocket(PORT);
System.out.println("Server start......");
// 进行阻塞
Socket socket = server.accept();
// 创建一个程序执行客户端的任务
new Thread(new ServerHandler(socket)).start();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(server != null){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
server = null;
}
}
}
采用多线程来处理接收到的请求(ServerHandler):
package com.ietree.basicskill.socket.mode1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerHandler implements Runnable {
private Socket socket;
public ServerHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader in = null;
PrintWriter out = null;
try {
in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
out = new PrintWriter(this.socket.getOutputStream(), true);
String body = null;
while (true) {
body = in.readLine();
if(body == null){
break;
}
System.out.println("Server: " + body);
out.println("服务器端回送响应的数据。");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(out != null){
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
socket = null;
}
}
}
客户端(Client):
package com.ietree.basicskill.socket.mode1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* 客户端
*/
public class Client {
final static String ADDRESS = "127.0.0.1";
final static int PORT = 8765;
public static void main(String[] args) {
Socket socket = null;
BufferedReader in = null;
PrintWriter out = null;
try {
socket = new Socket(ADDRESS, PORT);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
// 向服务器端发送数据
out.println("接收到客户端的请求数据......");
String response = in.readLine();
System.out.println("Client: " + response);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(out != null){
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
socket = null;
}
}
}
程序输出:
Server:
Server start......
Server: 接收到客户端的请求数据......
Client:
Client: 服务器端回送响应的数据。
同步非阻塞(NIO)
异步非阻塞(AIO)
看完上述内容,你们掌握利用Java怎么样实现网络通信功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
java 实现网络通信_利用Java怎么样实现网络通信功能相关推荐
- java 刷新界面_利用java如何实现在删除信息后刷新页面功能
利用java如何实现在删除信息后刷新页面功能 发布时间:2020-11-17 14:25:49 来源:亿速云 阅读:74 作者:Leah 这篇文章给大家介绍利用java如何实现在删除信息后刷新页面功能 ...
- java invoke 泛型_利用Java反射机制和泛型,全自动解析json
有啦这个简直,太爽啦, 利用Java 反射机制,利用Class 就可以得到 类的 变量 Field[] fields=cls.getDeclaredFields(); 还可以通过类中 的方法名字 去 ...
- java post 注册_利用JAVA发送POST请求(垃圾注册就是这么产生的) | 学步园
大伙都知道利用JAVA的net包的URL类和 URLConnection可以得到网页源代码(这个应该是蜘蛛程序的锥形吧),但是向网页发送数据怎么办呢,GET请求很好处理,直接在网址后面加参数就可以了, ...
- java远控_利用Java实现远程控制
利用 Java 实现远程控制 摘 要: 介绍了远程控制地原理 , 详细地叙述了利用 Java 实现远程控制软件地程序设计方法和要点 , 并给出了要点地具体实现方法 . 关键词: 远程控制: Java ...
- java游戏循环_利用Java循环语句实现攻击防御塔小游戏
/* * 时间:2018-3-21 * 目的:practice * 内容:利用Java循环语句实现攻击防御塔小游戏 * 使用Java while语句实现一个英雄攻击防御塔的小程序,防御塔血量总计100 ...
- java jmap 分析_利用java虚拟机的工具jmap分析java内存情况
有时候碰到性能问题,比如一个java application出现out of memory,出现内存泄漏的情况,再去修改bug可能会变得异常复杂,利用工具去分析整个java application 内 ...
- java多线程查询_利用Java函数式接口处理多线程查询
Java函数式接口 有且只有一个抽象方法的接口被称为函数式接口. @FunctionalInterface注解: 该注解可用于一个接口的定义上, 一旦使用该注解来定义接口, 编译器将会强制检查该接口是 ...
- java 全双工服务器_利用Java实现串口全双工通讯_JAVA实例教程_IT部落
本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系 ...
- java实现浏览器_利用Java实现网页浏览器
使用VC,VB或者C#的开发者们对于在程序里面嵌入一个网页来说,那真是小事一桩.但是在JAVA里面,却几乎是不可能实现的任务. JEditorPane虽然说可以打开网页,但是它那解析速度以及解析质量, ...
最新文章
- 没有顶会的CV/NLP方向的博士生毕业出路在哪里?
- 决策树可视化,被惊艳到了!
- python初体验-hello world答案_Python初体验_基础(一)
- linux安装mysql 5.6.33
- linux离线安装redmine_Feem:免流量跨平台文件传输工具,支持离线分享
- java将图片上传数据库_〔技巧实例〕轻松实现将上传图片到数据库
- 注意力测试软件系统,儿童注意力训练评估软件 - 训练评估软件 - 唯普诺心理,心理测评系统,心理测评软件,婴幼儿智能发育,心理软件...
- 作者:​光亮(1982-),男,博士,华为技术有限公司高级标准经理。
- 【Python】我的第一个EXE程序
- [转载] 使用Keras和TensorFlow 2.0建立深度学习模型对图像进行分类
- [转]20个优秀网站助你征服CSS
- jquery扩展 $.fn
- java 读取.xlsx_java 读取xlsx
- 计算机怎么会自动开机,电脑怎么设置为通电就自动开机
- CSS( Cascading Style Sheets )简书
- 科目一常考知识点速记技巧汇总(2022全新版)
- 基于51控制的人体感应灯
- Web前端开发技术实验与实践(第3版)储久良编著实训12
- Qt之开源绘图控件QCustomPlot
- 4.4之后无法在外置SD卡根目录创建文件夹