温馨提示:这篇文章已超过287天没有更新,请注意相关的内容是否还可用!
Java中的Socket类提供了一种简单而有效的方式来进行网络通信。它可以用于在客户端和服务器之间传输数据。在文件传输方面,可以使用Socket类来实现文件的发送和接收。
我们需要创建一个服务器端和一个客户端。服务器端负责监听客户端的连接请求,并接收文件。客户端负责连接服务器并发送文件。
服务器端代码示例:
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) {
try {
ServerSocket serverSocket = new ServerSocket(12345);
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[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
fileOutputStream.close();
inputStream.close();
socket.close();
serverSocket.close();
System.out.println("文件接收成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们创建了一个ServerSocket对象来监听指定端口(这里使用12345)。一旦有客户端连接,我们就接受连接并获取到输入流。然后,我们创建一个FileOutputStream对象来写入接收到的文件内容。通过循环读取输入流中的数据,并将其写入文件输出流中,直到读取完毕。我们关闭所有的流和套接字。
客户端代码示例:
import java.io.File;
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) {
try {
Socket socket = new Socket("localhost", 12345);
System.out.println("连接服务器成功!");
File file = new File("file_to_send.txt");
FileInputStream fileInputStream = new FileInputStream(file);
OutputStream outputStream = socket.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
fileInputStream.close();
outputStream.close();
socket.close();
System.out.println("文件发送成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们创建了一个Socket对象并连接到指定的服务器地址和端口(这里使用localhost和12345)。然后,我们创建一个FileInputStream对象来读取要发送的文件内容。接下来,我们获取到输出流,并通过循环读取文件内容,并将其写入输出流中,直到读取完毕。我们关闭所有的流和套接字。
这样,我们就完成了基于Java Socket的文件传输。服务器端接收到客户端发送的文件,并保存到本地;客户端将本地文件发送给服务器端。通过Socket类的输入输出流,我们可以方便地实现文件传输的功能。