Java设计并实现一个基于字符界面的C/S结构的文件传输程序,给出代码
时间: 2024-03-17 19:47:57 浏览: 191
基于C/S的一个文件传输
以下是Java实现基于字符界面的C/S结构的文件传输程序的示例代码,仅供参考:
客户端代码:
```java
import java.io.*;
import java.net.*;
public class FileTransferClient {
public static void main(String[] args) throws IOException {
// 1. 创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket("localhost", 8888);
// 2. 获取输出流,向服务器端发送请求
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
printWriter.write("Hello Server!");
// 3. 获取输入流,并读取服务器端的响应信息
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String info = null;
while ((info = bufferedReader.readLine()) != null) {
System.out.println("我是客户端,服务器端说:" + info);
}
// 4. 关闭资源
bufferedReader.close();
inputStream.close();
printWriter.close();
outputStream.close();
socket.close();
}
}
```
服务端代码:
```java
import java.io.*;
import java.net.*;
public class FileTransferServer {
public static void main(String[] args) throws IOException {
// 1. 创建服务器端Socket,指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
// 2. 调用accept()方法开始监听,等待客户端的连接
System.out.println("服务器已启动,等待客户端的连接...");
Socket socket = serverSocket.accept();
// 3. 获取输入流,并读取客户端发送的信息
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String info = null;
while ((info = bufferedReader.readLine()) != null) {
System.out.println("我是服务器端,客户端说:" + info);
}
// 4. 获取输出流,响应客户端的请求
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
printWriter.write("Hello Client!");
// 5. 关闭资源
printWriter.close();
outputStream.close();
bufferedReader.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}
```
以上代码仅作为示例,实际应用中需要根据需求进行修改和完善。例如,文件传输部分可以使用Java的FileInputStream和FileOutputStream类来实现,可以使用多线程来提高传输效率等等。
阅读全文