利用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怎么样实现网络通信功能相关推荐

  1. java 刷新界面_利用java如何实现在删除信息后刷新页面功能

    利用java如何实现在删除信息后刷新页面功能 发布时间:2020-11-17 14:25:49 来源:亿速云 阅读:74 作者:Leah 这篇文章给大家介绍利用java如何实现在删除信息后刷新页面功能 ...

  2. java invoke 泛型_利用Java反射机制和泛型,全自动解析json

    有啦这个简直,太爽啦, 利用Java 反射机制,利用Class 就可以得到 类的 变量  Field[] fields=cls.getDeclaredFields(); 还可以通过类中 的方法名字 去 ...

  3. java post 注册_利用JAVA发送POST请求(垃圾注册就是这么产生的) | 学步园

    大伙都知道利用JAVA的net包的URL类和 URLConnection可以得到网页源代码(这个应该是蜘蛛程序的锥形吧),但是向网页发送数据怎么办呢,GET请求很好处理,直接在网址后面加参数就可以了, ...

  4. java远控_利用Java实现远程控制

    利用 Java 实现远程控制 摘 要: 介绍了远程控制地原理 , 详细地叙述了利用 Java 实现远程控制软件地程序设计方法和要点 , 并给出了要点地具体实现方法 . 关键词: 远程控制: Java ...

  5. java游戏循环_利用Java循环语句实现攻击防御塔小游戏

    /* * 时间:2018-3-21 * 目的:practice * 内容:利用Java循环语句实现攻击防御塔小游戏 * 使用Java while语句实现一个英雄攻击防御塔的小程序,防御塔血量总计100 ...

  6. java jmap 分析_利用java虚拟机的工具jmap分析java内存情况

    有时候碰到性能问题,比如一个java application出现out of memory,出现内存泄漏的情况,再去修改bug可能会变得异常复杂,利用工具去分析整个java application 内 ...

  7. java多线程查询_利用Java函数式接口处理多线程查询

    Java函数式接口 有且只有一个抽象方法的接口被称为函数式接口. @FunctionalInterface注解: 该注解可用于一个接口的定义上, 一旦使用该注解来定义接口, 编译器将会强制检查该接口是 ...

  8. java 全双工服务器_利用Java实现串口全双工通讯_JAVA实例教程_IT部落

    本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系 ...

  9. java实现浏览器_利用Java实现网页浏览器

    使用VC,VB或者C#的开发者们对于在程序里面嵌入一个网页来说,那真是小事一桩.但是在JAVA里面,却几乎是不可能实现的任务. JEditorPane虽然说可以打开网页,但是它那解析速度以及解析质量, ...

最新文章

  1. 没有顶会的CV/NLP方向的博士生毕业出路在哪里?
  2. 决策树可视化,被惊艳到了!
  3. python初体验-hello world答案_Python初体验_基础(一)
  4. linux安装mysql 5.6.33
  5. linux离线安装redmine_Feem:免流量跨平台文件传输工具,支持离线分享
  6. java将图片上传数据库_〔技巧实例〕轻松实现将上传图片到数据库
  7. 注意力测试软件系统,儿童注意力训练评估软件 - 训练评估软件 - 唯普诺心理,心理测评系统,心理测评软件,婴幼儿智能发育,心理软件...
  8. 作者:​光亮(1982-),男,博士,华为技术有限公司高级标准经理。
  9. 【Python】我的第一个EXE程序
  10. [转载] 使用Keras和TensorFlow 2.0建立深度学习模型对图像进行分类
  11. [转]20个优秀网站助你征服CSS
  12. jquery扩展 $.fn
  13. java 读取.xlsx_java 读取xlsx
  14. 计算机怎么会自动开机,电脑怎么设置为通电就自动开机
  15. CSS( Cascading Style Sheets )简书
  16. 科目一常考知识点速记技巧汇总(2022全新版)
  17. 基于51控制的人体感应灯
  18. Web前端开发技术实验与实践(第3版)储久良编著实训12
  19. Qt之开源绘图控件QCustomPlot
  20. 4.4之后无法在外置SD卡根目录创建文件夹

热门文章

  1. ServletContextListener 解析用法
  2. Servlet的学习(四)
  3. mysql 根据地图 坐标 查询 周边景区、酒店
  4. 关于restful协议很多人的误解
  5. linux-安装jdk
  6. python中sort命令介绍以及list结构中统计各元素出现的个数的方法
  7. 【opencv】VideoCapture打不开本地视频文件或者网络IP摄像头
  8. delphi fastreport 动态加载图片
  9. 《构建之法》 读书笔记(3)
  10. 怎么去掉Xcode工程中的某种类型的警告