任务二:Socket类和ServerSocket类练习
- 利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。
- 客户端向服务器端发送“Time”命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送“Exit”命令,服务器端向客户端返回“Bye”后退出。
- 基本要求:编写完整程序;两人一组,一个作为服务器端,另一人作为客户端。服务器端和客户端都需要打印出接受到的消息和发出的命令。
- 程序运行结果如下:
客户端 服务器端
package second;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Server {
public static void main(String[] args) {
try {
System.out.println("服务器已打开");
ServerSocket server = null;
server = new ServerSocket(4331);
Socket you = null;
System.out.println("等待客户呼叫");
you = server.accept();
System.out.println("用户已连接");
BufferedReader br;
BufferedWriter bw;
br = new BufferedReader(new InputStreamReader(you.getInputStream()));
bw = new BufferedWriter(new OutputStreamWriter(you.getOutputStream()));
while (true) {
char[] buffer = new char[40];
int a = br.read(buffer);
String s = new String(buffer,0,4);
System.out.println(s);
if (s.equals("Time")|| s.equals("time")) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(date);
String s2 = "" + format.format(date);
bw.write(s2);
bw.flush();
}
else if (s.equals("Exit")|| s.equals("exit")) {
bw.write("Bye");
System.out.println("连接已经断开");
bw.flush();
server.close();
you.close();
br.close();
bw.close();
break;
}
else if(s.equals("Good") || s.equals("good"))
{
bw.write("你是最棒的!!^_^ ^_^");
System.out.println("亲切的回复^_^");
bw.flush();
}
else
{
bw.write("输入错误!!");
bw.flush();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("用户已退出");
e.printStackTrace();
}
}
}
package second;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
try {
Socket mysocket = new Socket("127.0.0.1", 4331);
BufferedReader br;
BufferedWriter bw;
br = new BufferedReader(new InputStreamReader(mysocket.getInputStream()));
bw = new BufferedWriter(new OutputStreamWriter(mysocket.getOutputStream()));
String s;
System.out.println("欢迎使用^_^ ^_^");
Scanner rd = new Scanner(System.in);
s = rd.next();
while (true) {
String s2 = "";
bw.write(s);
bw.flush();
char[] buffer = new char[40];
int a = br.read(buffer);
s2 = new String(buffer);
System.out.println("" + s2);
if (s.equals("Exit")|| s.equals("exit")) {
br.close();
bw.close();
System.out.println("程序已关闭");
System.exit(0);
}
s = rd.next();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}