java在电脑上的用法,如何使用Java通过网络将文件从一台计算机传输到另一台计算机?...

小编典典

发送和接收文件

文件的发送和接收基本上分为两个简单的代码段。

接收代码:

ServerSocket serverSoc = new ServerSocket(LISTENING_PORT);

Socket connection = serverSoc.accept();

// code to read from connection.getInputStream();

发送代码:

File fileToSend;

InputStream fileStream = new BufferedInputStream(fileToSend);

Socket connection = new Socket(CONNECTION_ADDRESS, LISTENING_PORT);

OutputStream out = connection.getOutputStream();

// my method to move data from the file inputstream to the output stream of the socket

copyStream(fileStream, out);

当他们想要发送文件时,发送代码段将在正在发送代码的计算机上运行。

接收代码需要放入一个循环中,以便每次有人想要连接到服务器时,服务器都可以处理该请求,然后返回到在serverSoc.accept()上等待。

为了允许在两台计算机之间发送文件,每台计算机将需要运行服务器(接收代码)以侦听传入的文件,并且当它们要发送文件时,它们都需要运行发送代码。

进度条

在JProgressBarSwing中是很容易的使用。但是,使其正常工作并显示文件传输的当前进度稍微困难一些。

要使进度条显示在表单上,​​仅涉及将其放到上JFrame,也许还要进行设置,setIndeterminate(false)以表明程序正在运行。

要正确实施进度条,您需要创建自己的SwingWorker。Java教程在并发课程中有一个很好的例子。

但是,这本身就是一个相当困难的问题。如果您需要更多帮助,我建议您自己问这个问题。

2020-11-13

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Java 中,可以使用 java.net 包中的 Socket 类来实现客户端/服务器程序。 下面是一个简单的例子,展示了如何使用数据套接字在两台计算机之间传输文件的过程: 服务器端代码: ``` import java.io.*; import java.net.*; public class Server { public static void main(String[] args) throws IOException { // 创建服务器套接字并绑定到指定端口 ServerSocket serverSocket = new ServerSocket(9999); System.out.println("服务器已启动,等待客户端连接..."); // 等待客户端连接 Socket socket = serverSocket.accept(); System.out.println("客户端已连接"); // 获取输入流并读取客户端发送的文件 InputStream inputStream = socket.getInputStream(); FileOutputStream fileOutputStream = new FileOutputStream("received_file.txt"); byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { fileOutputStream.write(buffer, 0, bytesRead); } fileOutputStream.close(); // 关闭套接字 socket.close(); serverSocket.close(); } } ``` 客户端代码: ``` import java.io.*; import java.net.*; public class Client { public static void main(String[] args) throws IOException { // 创建客户端套接字并连接到指定地址和端口 Socket socket = new Socket("localhost", 9999); System.out.println("连接到服务器"); // 获取输出流并将文件发送到服务器 FileInputStream fileInputStream = new FileInputStream("file_to_send.txt"); OutputStream outputStream = socket.getOutputStream(); byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = fileInputStream.read(buffer)) != -1) { outputStream.write(buffer, ### 回答2: 使用Java编写一个客户端/服务器程序来传输文件需要以下步骤: 1. 创建服务器程序:创建一个服务器端的Java程序,它将监听客户端的连接请求,并在连接建立后接受文件传输请求。 2. 创建客户端程序:创建一个客户端的Java程序,它将连接到服务器,并发送文件传输请求。 3. 建立连接:客户端使用Socket类与服务器建立连接。客户端通过指定服务器的IP地址和端口号来与服务器进行通信。 4. 服务器接受连接请求:服务器使用ServerSocket类监听指定的端口号,并接受客户端的连接请求。一旦连接建立,服务器将为每个客户端创建一个新的线程来处理文件传输请求。 5. 客户端发送文件:客户端将需要传输文件读取为字节流,并通过Socket输出流将字节流发送给服务器。 6. 服务器接收文件:服务器使用Socket输入流接收客户端发送的字节流,并将其保存为文件。 7. 传输完成:传输完成后,客户端和服务器均关闭连接。 以下是一个简单的代码示例来说明上述步骤: 服务器端代码: ```java import java.io.FileOutputStream; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(1234); Socket socket = serverSocket.accept(); InputStream inputStream = socket.getInputStream(); FileOutputStream fileOutputStream = new FileOutputStream("文件路径"); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { fileOutputStream.write(buffer, 0, bytesRead); } fileOutputStream.close(); inputStream.close(); socket.close(); serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 客户端代码: ```java import java.io.FileInputStream; import java.io.OutputStream; import java.net.Socket; public class Client { public static void main(String[] args) { try { Socket socket = new Socket("服务器IP地址", 1234); FileInputStream fileInputStream = new FileInputStream("文件路径"); OutputStream outputStream = socket.getOutputStream(); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fileInputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } outputStream.close(); fileInputStream.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在运行服务器端和客户端程序之前,需要将文件路径和服务器的IP地址进行替换。以这种方式,文件将从一台计算机传输到另一台计算机上。 ### 回答3: 编写一个客户端/服务器程序可以使用Java的Socket类来实现。在这种情况下,我们将使用数据套接字(DataSocket)来传输文件。 首先,我们需要编写服务器端的代码,以便它可以监听客户端的连接并接收文件。服务器端代码如下: ```java import java.io.*; import java.net.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(1234); // 使用指定的端口创建服务器套接字 System.out.println("等待客户端连接..."); Socket clientSocket = serverSocket.accept(); // 监听连接请求,等待客户端连接 System.out.println("连接成功,正在接收文件..."); InputStream inputStream = clientSocket.getInputStream(); // 获取输入流,用于接收文件数据 FileOutputStream fileOutputStream = new FileOutputStream("目标文件路径"); // 创建输出流,用于将文件数据写入目标文件 byte[] buffer = new byte[8192]; // 缓冲区大小 int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 通过输入流读取数据到缓冲区 fileOutputStream.write(buffer, 0, bytesRead); // 通过输出流将数据写入目标文件 } System.out.println("文件接收完成。"); fileOutputStream.close(); inputStream.close(); clientSocket.close(); serverSocket.close(); } } ``` 然后,我们需要编写客户端的代码,以便它可以连接到服务器并将文件发送给它。客户端代码如下: ```java import java.io.*; import java.net.*; public class Client { public static void main(String[] args) throws IOException { Socket clientSocket = new Socket("服务器IP地址", 1234); // 使用服务器的IP地址和端口号创建客户端套接字 File file = new File("要发送的文件路径"); FileInputStream fileInputStream = new FileInputStream(file); // 创建输入流,用于读取要发送的文件数据 OutputStream outputStream = clientSocket.getOutputStream(); // 获取输出流,用于发送文件数据 System.out.println("正在发送文件..."); byte[] buffer = new byte[8192]; // 缓冲区大小 int bytesRead; while ((bytesRead = fileInputStream.read(buffer)) != -1) { // 通过输入流读取文件数据到缓冲区 outputStream.write(buffer, 0, bytesRead); // 通过输出流将缓冲区的数据发送给服务器 } System.out.println("文件发送完成。"); outputStream.close(); fileInputStream.close(); clientSocket.close(); } } ``` 在上面的代码中,你需要将"目标文件路径"和"要发送的文件路径"替换为实际的文件路径。你还需要将"服务器IP地址"替换为服务器的实际IP地址。 以上就是用Java编写一个客户机/服务器程序,利用数据套接字将一个文件从一台计算机传到另一台计算机的实现方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值