一、设计分析
二、代码实现
Server类
package ftpServer_34;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket server=null;
Socket socket=null;
BufferedReader br=null;
BufferedWriter bw=null;
BufferedReader bbr=null;
//建立服务器,设置端点为5000
server=new ServerSocket(5000);
//提示用户服务器已经启动
System.out.println("服务器已启动");
//获取用户的输入 bbr
bbr=new BufferedReader(new InputStreamReader(System.in));
//监听客户端服务器
socket=server.accept();
//当客户端启动,提示用户客户端已连接
System.out.println("客户端已连接");
//获取客户端的输入,存储到缓冲流中
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//输出客户端的输出
System.out.println("客户端说:"+br.readLine());
//获取用户的输入
String line=bbr.readLine();
while (!line.equals("over")) {
//客户端
bw.write(line);
//换行
bw.newLine();
//刷新缓冲流
bw.flush();
//输出客户端的输入信息
System.out.println("客户端说:"+br.readLine());
//再获取用户的输入
line=bbr.readLine();
}
bw.close();
br.close();
bbr.close();
socket.close();
}
}
Client类
package ftpServer_34;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket socket=null;
BufferedReader br=null;
BufferedWriter bw=null;
BufferedReader bbr=null;
try {
//获取服务器连接
socket=new Socket("localhost",5000);
//获取用户输入
bbr=new BufferedReader(new InputStreamReader(System.in));
//读取输入
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//输出流
bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//定义一个数组,获取用户输入的数据流
String line=bbr.readLine();
//循环,
//判断如果用户输入的是over,则跳出循环,否则循环
while (!line.equals("over")) {
//输出用户的输入
bw.write(line);
bw.newLine();
//刷新缓冲数据
bw.flush();
//再次读取服务器数据
System.out.println("服务器说: "+br.readLine());
//再次赋值给到line
line=bbr.readLine();
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
bw.close();
br.close();
bbr.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
服务器端运行结果
客户端运行结果