java基于TCP/IP的用于传输任意大小的文件
时间: 2024-02-05 07:14:16 浏览: 95
Java中可以使用Socket和ServerSocket类基于TCP/IP协议进行文件传输。
具体步骤如下:
1. 服务器端创建ServerSocket对象,等待客户端连接。
2. 客户端创建Socket对象,连接服务器端。
3. 服务器端接受客户端连接,创建Socket对象,获取输入输出流。
4. 客户端获取输入输出流。
5. 客户端将要传输的文件读入内存中。
6. 客户端将文件内容写入输出流。
7. 服务器端从输入流中读取文件内容。
8. 服务器端将文件内容写入指定文件中。
9. 关闭输入输出流,关闭Socket对象,关闭ServerSocket对象。
下面是服务器端的代码示例:
```java
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,地址为:" + socket.getInetAddress().getHostAddress());
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[1024];
int len;
FileOutputStream fileOutputStream = new FileOutputStream("E:\\test.txt");
while ((len = inputStream.read(bytes)) != -1) {
fileOutputStream.write(bytes, 0, len);
}
OutputStream outputStream = socket.getOutputStream();
outputStream.write("文件已接收".getBytes());
fileOutputStream.close();
outputStream.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}
```
下面是客户端的代码示例:
```java
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 8888);
OutputStream outputStream = socket.getOutputStream();
FileInputStream fileInputStream = new FileInputStream("E:\\test.txt");
byte[] bytes = new byte[1024];
int len;
while ((len = fileInputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
socket.shutdownOutput();
InputStream inputStream = socket.getInputStream();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
while ((len = inputStream.read(bytes)) != -1) {
byteArrayOutputStream.write(bytes, 0, len);
}
System.out.println(byteArrayOutputStream.toString());
fileInputStream.close();
outputStream.close();
inputStream.close();
socket.close();
}
}
```
以上代码仅供参考,实际使用时需要根据具体情况进行调整。
阅读全文