Java编程 编写一个客户机/服务器程序,利用数据套接字将一个文件从一台计算机传到另一台计算机上。
时间: 2023-08-31 10:41:31 浏览: 131
### 回答1:
下面是一个示例代码,它实现了从客户端将文件传输到服务器的功能:
客户端:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
// 要传输的文件
File file = new File("test.txt");
// 连接到服务器的端口
int port = 12345;
// 创建一个套接字
Socket socket = new Socket("localhost", port);
// 创建输入流
InputStream in = new FileInputStream(file);
// 创建输出流
OutputStream out = socket.getOutputStream();
// 缓冲区
byte[] buffer = new byte[4096];
// 读取文件到缓冲区并写入输出流
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
// 关闭流
in.close();
out.close();
socket.close();
}
}
```
服务器:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
// 服务器的端口
int port = 12345;
// 创建服务器套接字
ServerSocket serverSocket = new ServerSocket(port);
// 等待客户端连接
Socket socket = serverSocket.accept();
// 创建输入流
InputStream in = socket.getInputStream();
// 创建输出流
OutputStream out = new FileOutputStream("received_file.txt");
// 缓冲区
byte[] buffer = new byte[4096];
// 从输入流中读取数据并写入输出流
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
// 关闭流
in.close();
out.close();
socket.close();
serverSocket.close();
}
}
```
在这个示例中,客户端从本
### 回答2:
编写一个Java的客户机/服务器程序可以使用Socket类来实现。以下是一个简单的示例代码:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept();
System.out.println("客户端连接成功!");
InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = new FileOutputStream("目标文件路径");
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
System.out.println("文件传输完成!");
outputStream.close();
inputStream.close();
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket clientSocket = new Socket("服务器IP地址", 8888);
System.out.println("连接服务器成功!");
InputStream inputStream = new FileInputStream("要传输的文件路径");
OutputStream outputStream = clientSocket.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
System.out.println("文件传输完成!");
outputStream.close();
inputStream.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
请注意,以上代码只是一个简单的示例,没有处理异常或错误情况。在实际使用中,应该添加适当的错误处理和异常处理代码。此外,需要将"服务器IP地址"替换为实际的服务器IP地址,"要传输的文件路径"替换为实际的文件路径,"目标文件路径"替换为目标服务器上的文件路径。
希望以上代码对您有所帮助!
阅读全文