设计一个基于TCP的文件上传功能,将文件从客户端上传到指定服务器。 进阶设计:文件传输完成后服务器给客户端发送“文件上传成功”的信息。这题Java完整代码
时间: 2024-03-09 09:48:25 浏览: 57
【计算机专业VB-毕业设计100套之】VB点对点聊天文件传输系统设计(源代码+系统)
这里是一个Java实现的基于TCP的文件上传功能,包括进阶设计要求:
服务端代码:
```java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream("test.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
socket.shutdownInput();
OutputStream os = socket.getOutputStream();
os.write("文件上传成功".getBytes());
fos.close();
socket.close();
serverSocket.close();
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 8888);
OutputStream os = socket.getOutputStream();
FileInputStream fis = new FileInputStream("test.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
socket.shutdownOutput();
InputStream is = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer2 = new byte[1024];
int len2;
while ((len2 = is.read(buffer2)) != -1) {
baos.write(buffer2, 0, len2);
}
System.out.println(baos.toString());
baos.close();
is.close();
fis.close();
socket.close();
}
}
```
上述代码中,客户端将本地的`test.txt`文件上传到服务器,服务器将文件保存为`test.txt`,并在上传完成后向客户端发送“文件上传成功”的信息。
阅读全文