我们要实现的具体功能是:
利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。
客户端向服务器端发送Time命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送Exit命令,服务器端向客户端返回“Bye”后退出。
题目比较简单的,我们直接来看代码吧:
首先是服务器端的实现:
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
import java.text.DateFormat;
import java.util.Date;//时间
//import java.util.Calendar;
public class Server {
public static void main(String args[]){
try{
ServerSocket server = new ServerSocket(11111);//创建服务器套接字
System.out.println("服务器启动完毕");
System.out.println("等待客户端连接...");
Socket socket = server.accept();//等待客户端连接
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//获得客户端的输入流
//OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream());//获得客户端输出流
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);//获得客户端输出流)
if(socket.isConnected()){
System.out.println("客户端名称为"+socket.getInetAddress().getHostAddress()+" 连接成功!");
//out.write("连接成功\n");
out.println("连接成功");
}
while(true){
String str = reader.readLine();
if(str.equals("Time")){//客户端请求时间数据
Date date = new Date();
// Calendar cal = Calendar.getInstance();
System.out.println("客户端请求当前时间");
DateFormat format = DateFormat.getDateInstance();
//out.write(format.format(date));//格式化输出时间
out.println(format.format(date));
}
else if(str.equals("exit")){//退出
//out.write("bye");
out.println("bye");
System.out.println("连接断开");
break;
}
else{
System.out.println("数据:"+str);
}
}
}catch(IOException e){
e.pr