iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何利用java-RMI进行大文件传输
  • 829
分享到

如何利用java-RMI进行大文件传输

2023-06-17 08:06:39 829人浏览 安东尼
摘要

今天就跟大家聊聊有关如何利用java-RMI进行大文件传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。为什么要用RMI在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由

今天就跟大家聊聊有关如何利用java-RMI进行大文件传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

为什么要用RMI

在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由于做的是富客户端应用,最终将技术选定在了RMI和Java-Sockets两种之间,其中RMI的灵活性不高,客户端和服务器端都必须是java编写,但使用比较方便,反观java-sockets,虽然比较灵活,但需要自己规定服务器端和客户端之间的通信协议。比较麻烦,几经权衡,最终还是选择RMI来进行服务器-客户端通信

文件上传问题

在使用java-rmi的过程中,必然会遇到一个文件上传的问题,由于在rmi中无法传输文件流(比如rmi中的方法参数不能是FileInputStream之类的),那么我们只好选择一种折中的办法,就是先用FileInputStream将文件读到一个 Byte数组中,然后把这个Byte数组作为参数传进RMI的方法中,然后在服务器端将Byte数组还原为outputStream,这样就能通过RMI 来传输文件了

这样做也有缺点,就是无法检验传输过来的数据的准确性,汗。。。

下面我就一个实例来讲解一下

文件结构

如何利用java-RMI进行大文件传输

FileClient

package rmiupload;           import java.io.BufferedInputStream;     import java.io.File;     import java.io.FileInputStream;     import java.io.FileNotFoundException;     import java.io.IOException;     import java.net.MalfORMedURLException;     import java.rmi.Naming;     import java.rmi.NotBoundException;     import java.rmi.RemoteException;           public class FileClient {               public FileClient() {             // TODO Auto-generated constructor stub         }               public static void main(String[] args) {             try {                 FileDataService fileDataService = (FileDataService) Naming.lookup("rmi://localhost:9001/FileDataService");                 fileDataService.upload("/Users/NeverDie/Documents/test.mp4", new FileClient().fileToByte("/Users/NeverDie/Music/test.mp4"));             } catch (MalformedURLException | RemoteException | NotBoundException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }         }     //这个方法比较重要,通过这个方法把一个名为filename的文件转化为一个byte数组         private byte[] fileToByte(String filename){             byte[] b = null;             try {                 File file = new File(filename);                 b = new byte[(int) file.length()];                 BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));                 is.read(b);             } catch (FileNotFoundException e) {             // TODO Auto-generated catch block                 e.printStackTrace();             } catch (IOException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }             return b;         }     }

FileDataService

package rmiupload;           import java.net.URL;     import java.rmi.Remote;     import java.rmi.RemoteException;           public interface FileDataService extends Remote{               //这里的filename应该是该文件存放在服务器端的地址         public void upload(String filename, byte[] file) throws RemoteException;           }

FileDataService_imp

package rmiupload;           import java.io.BufferedOutputStream;     import java.io.File;     import java.io.FileNotFoundException;     import java.io.FileOutputStream;     import java.io.IOException;     import java.net.URL;     import java.rmi.RemoteException;     import java.rmi.server.RMIClientSocketFactory;     import java.rmi.server.RMIServerSocketFactory;     import java.rmi.server.UnicastRemoteObject;           public class FileDataService_imp extends UnicastRemoteObject implements FileDataService{               public FileDataService_imp() throws RemoteException {               }               @Override         public void upload(String filename, byte[] fileContent) throws RemoteException{             File file = new File(filename);             try {                 if (!file.exists())                     file.createNewFile();                 BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(file));                 os.write(fileContent);             } catch (FileNotFoundException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             } catch (IOException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }           ;   }           }

FileServer

package rmiupload;           import java.net.MalformedURLException;     import java.rmi.Naming;     import java.rmi.RemoteException;     import java.rmi.reGIStry.LocateRegistry;           public class FileServer {               FileDataService fileDataService;               public FileServer() {             try {                 fileDataService = new FileDataService_imp();                 LocateRegistry.createRegistry(9001);                 Naming.rebind("rmi://localhost:9001/FileDataService", fileDataService);             } catch (RemoteException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             } catch (MalformedURLException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }                     }                        public static void main(String[] args) {             new FileServer();               }           }

看完上述内容,你们对如何利用java-RMI进行大文件传输有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 如何利用java-RMI进行大文件传输

本文链接: https://www.lsjlt.com/news/288002.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何利用java-RMI进行大文件传输
    今天就跟大家聊聊有关如何利用java-RMI进行大文件传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。为什么要用RMI在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由...
    99+
    2023-06-17
  • 利用java 怎么在局域网中进行文件传输
    利用java 怎么在局域网中进行文件传输?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 实现局域网文件传输ClientFile.java package&nb...
    99+
    2023-05-31
    java 局域网 ava
  • 如何使用netcat进行文件传输
    这篇文章将为大家详细讲解有关如何使用netcat进行文件传输,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先看一下帮助信息。$ nc -hOpenBSD netcat&nb...
    99+
    2023-06-09
  • 如何在java中使用socket对zip文件进行传输
    今天就跟大家聊聊有关如何在java中使用socket对zip文件进行传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。服务器端程序:import java.io.*;import j...
    99+
    2023-05-31
    java socket zip文件
  • 怎么使用java socket传输大文件
    要使用Java Socket传输大文件,可以使用以下步骤:1. 创建一个ServerSocket对象来监听某个端口号,等待客户端连接...
    99+
    2023-09-23
    java
  • 如何进行Linux与windows文件传输
    这期内容当中小编将会给大家带来有关如何进行Linux与windows文件传输,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Linux系统之间传输文件有很多种方法,此篇博客介绍其中的两种。也是在开发过程中经...
    99+
    2023-06-05
  • 详解Android使用Socket对大文件进行加密传输
    前言数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现...
    99+
    2023-05-31
    android 文件加密 对大
  • golang如何实现大文件传输
    在 Golang 中,可以使用 io 和 os 包来实现大文件的传输。以下是一种可能的实现方式: 首先,需要创建一个服务器端和一个客...
    99+
    2023-10-21
    golang
  • Linux中如何传输超大文件
    这篇文章主要介绍了Linux中如何传输超大文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本文研究的主要内容是Linux下如何传输超大文件,具体如下。linux下的文件传输...
    99+
    2023-06-10
  • 详解Python如何使用Netmiko进行文件传输
    目录Netmiko简介Netmiko安装使用Netmiko的SCP函数传输文件从设备传输文件到本地计算机从本地计算机传输文件到设备总结在网络设备管理中,传输配置文件、镜像文件等是经常...
    99+
    2023-05-18
    Python Netmiko实现文件传输 Python Netmiko文件传输 Python Netmiko
  • 如何在golang中使用WebSocket进行文件传输
    如何在golang中使用WebSocket进行文件传输WebSocket是一种支持双向通信的网络协议,能够在浏览器和服务器之间建立持久的连接。在golang中,我们可以使用第三方库gorilla/websocket来实现WebSocket功...
    99+
    2023-12-18
    Golang websocket 文件传输
  • 如何利用socket完成VB.NET文件传输
    本篇内容主要讲解“如何利用socket完成VB.NET文件传输”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用socket完成VB.NET文件传输”吧!VB.NET文件传输代码:发送端Pu...
    99+
    2023-06-17
  • 利用阿里云ecs云服务器进行FTP文件传输
    阿里云ecs云服务器是一种基于虚拟化技术的云计算服务,提供稳定可靠、安全高效、弹性扩展的云基础设施。FTP(File TransferProtocol)是网络上常用的文件传输协议,可以实现本地计算机与远程计算机之间的文件传输。本文将详细介绍...
    99+
    2023-11-11
    阿里 文件传输 服务器
  • Python怎么使用Netmiko进行文件传输
    传输配置文件、映像文件等是网络设备管理中常见的操作。Netmiko是一个Python库,可用于与各种网络设备进行交互,提供了一些用于传输文件的函数,其中包括SCP(Secure Copy Protocol)函数。Netmiko简介Netmi...
    99+
    2023-05-19
    Python netmiko
  • 如何用Volume在主机和Docker间进行文件传输
    本文小编为大家详细介绍“如何用Volume在主机和Docker间进行文件传输”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何用Volume在主机和Docker间进行文件传输”文章能帮助大家解决疑惑,下面...
    99+
    2022-10-19
  • 使用netcat(瑞士军刀)进行文件传输
    nc(netcat)被誉为网络工具中的“瑞士军刀”,体积虽小但功能强大,nc最简单的功能是端口扫描,这里我主要笔记一下它作为文件传输的妙用。 首先看一下帮助信息。 $ nc -h OpenBSD ne...
    99+
    2022-06-04
    文件传输 瑞士军刀 netcat
  • 利用java如何实现上传ftp文件
    今天就跟大家聊聊有关利用java如何实现上传ftp文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。准备条件:java实现ftp上传用到了commons-net-3.3.jar包首先...
    99+
    2023-05-31
    java ftp上传 ava
  • 如何利用Plupload.js解决大文件上传问题
    这篇文章主要介绍如何利用Plupload.js解决大文件上传问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!大容量文件上传早已不是什么新鲜问题,在.net 2.0时代,HTML5也...
    99+
    2022-10-19
  • 两台Linux系统该如何怎样进行文件传输
    这篇文章跟大家分析一下“两台Linux系统该如何怎样进行文件传输”。内容详细易懂,对“两台Linux系统该如何怎样进行文件传输”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“两台L...
    99+
    2023-06-28
  • java如何获取上传文件大小
    在Java中,可以通过使用`File`类或`MultipartFile`类来获取上传文件的大小。1. 使用`File`类获取文件大小...
    99+
    2023-08-23
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作