客户端实现步骤
- 创建Socket对象:指定服务器的IP地址和端口号。
- 获取输出流:通过Socket对象获取
OutputStream
,用于向服务器发送数据。
- 读取文件内容:使用
FileInputStream
读取本地文本文件的内容。
- 发送文件内容:将读取到的文件内容通过输出流发送给服务器。
- 关闭资源:发送完毕后,关闭
FileInputStream
和Socket
。
关键代码示例
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
String serverIp = "127.0.0.1";
int serverPort = 12345;
String filePath = "example.txt";
try (Socket socket = new Socket(serverIp, serverPort);
OutputStream outputStream = socket.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(filePath)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
System.out.println("文件传输完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务器端实现步骤
- 创建ServerSocket对象:指定监听的端口号。
- 监听连接:调用
accept()
方法等待客户端连接。
- 获取输入流:通过与客户端建立的Socket获取
InputStream
,用于接收数据。
- 创建文件并写入数据:使用
FileOutputStream
创建新文件,并将接收到的数据写入文件。
- 关闭资源:接收完毕后,关闭
FileOutputStream
、Socket
和ServerSocket
。
关键代码示例
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
int serverPort = 12345;
String savePath = "received.txt";
try (ServerSocket serverSocket = new ServerSocket(serverPort);
Socket clientSocket = serverSocket.accept();
InputStream inputStream = clientSocket.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(savePath)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
System.out.println("文件接收完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}