以下是实施时间服务器的代码
服务器类
public static void main(String args[])
{
try{
ServerSocket ss=new ServerSocket(990);
Socket s=ss.accept();
while(true)
{
Calendar c=Calendar.getInstance();
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out =new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
out.println("Hello This is server & My Time is :");
out.println("Time ::: Hour="+c.HOUR +" Min="+c.MINUTE +" sec="+c.SECOND);
out.flush();
s.close();
}
}
catch(Exception e)
{
}
}
客户端类
public static void main(String args[])
{
try{
ServerSocket ss=new ServerSocket(990);
Socket s=ss.accept();
while(true)
{
Calendar c=Calendar.getInstance();
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out =new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
out.println("Hello This is server & My Time is :");
out.println("Time ::: Hour="+c.HOUR +" Min="+c.MINUTE +" sec="+c.SECOND);
out.flush();
s.close();
}
}
catch(Exception e)
{
}
}
程序正在运行,但输出始终是
time:: hour=10 min=12 sec=13
为什么输出上述值
答案 0 :(得分:5)
那是因为您正在打印Calendar
类中存在的名为HOUR
,MINUTE
,SECOND
的静态整数字段的值。您需要使用Calendar#get(field)
方法从日历中获取HOUR
,MINUTE
,SECOND
值。
out.println("Time ::: Hour="+c.get(Calendar.HOUR) +" Min="+c.get(Calendar.MINUTE)+" sec="+c.get(Calendar.SECOND));
请注意,由于HOUR,MINUTE,SECOND是static
字段,因此您需要使用类名(Calendar.SECOND
)访问它们而不使用实例(c.SECOND
)。