一、
客户端
- 客户端编写聊天的方法chat()
- 要求使用BufferedReader与BufferedWriter缓冲类
- 编写用于测试的主方法调用chat()方法
服务器端 - 编写提供服务的方法service()
- 编写用于测试的主方法调用service()方法
二、代码实现
客户端:
public class ChatClient {
public void chat() {
try {
// 连接到服务器
/**连接到服务器0.5分*/
Socket socket = new Socket("localhost", 9000);
try {
/** 读取服务器端传过来信息的输入流对象 -- */
InputStream is=socket.getInputStream();
Reader r=new InputStreamReader(is);
BufferedReader br=new BufferedReader(r);
/** 向服务器端发送信息的输出流对象-- */
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// 装饰标准输入流,用于从控制台输入
Scanner scanner = new Scanner(System.in);
while (true) {
String send = scanner.nextLine();
System.out.println("客户端:" + send);
/** 把从控制台得到的信息传送给服务器 */
bw.write(send);
/** 读取来自服务器的信息 */
String accpet =br.readLine();
System.out.println(accpet);
}
} finally {
socket.close(); /**关闭*/
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ChatClient().chat(); /**测试*/
}
}
服务器端:
public class ChatServer {
// 提供服务
public void service() {
try {/**建立服务器连接 0.5分*/
ServerSocket server = new ServerSocket(9000);
/**等待客户连接 0.5分*/
Socket socket = server.accept();
try {
/** 读取客户端传过来信息的输入流对象 --0.5分 */
InputStream is=socket.getInputStream();
Reader r=new InputStreamReader(is);
BufferedReader br=new BufferedReader(r);
/** 向客户端发送信息的输出流对象--0.5分 */
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// 获取控制台输入的Scanner
Scanner scanner = new Scanner(System.in);
while (true) {
/** 读取来自服务器的信息 0.5分*/
String accpet =br.readLine();
System.out.println(accpet);
String send = scanner.nextLine();
System.out.println("客户端:" + send);
/** 把从控制台得到的信息传送给服务器 0.5分*/
bw.write(send);
}
} finally {// 建立连接失败的话不会执行socket.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ChatServer().service(); /**0.5分*/
}
}