Java 命令行DateAthost客户端
编写一个客户端应用程序,在打印新值之后,将机器时间设置为给定主机 日期。应用程序使用TCP端口37中提供的标准主机日期服务。 参数是主机名和端口号。端口号的默认值为37。如果 程序运行时没有参数,它与本地主机通信。程序使用标准 输出以打印信息。 重要提示: dateAtHost服务提供一个带符号的32位整数,自1月1日起的秒数, 1990 DateAtHost服务器 编写一个服务器应用程序,它侦听给定的TCP端口,并以32位整数发送日期 格式化到客户端,如主机服务的标准日期。程序参数是端口号。 端口号的默认值为37。程序使用标准输出打印信息Java 命令行DateAthost客户端,java,tcp,network-programming,Java,Tcp,Network Programming,编写一个客户端应用程序,在打印新值之后,将机器时间设置为给定主机 日期。应用程序使用TCP端口37中提供的标准主机日期服务。 参数是主机名和端口号。端口号的默认值为37。如果 程序运行时没有参数,它与本地主机通信。程序使用标准 输出以打印信息。 重要提示: dateAtHost服务提供一个带符号的32位整数,自1月1日起的秒数, 1990 DateAtHost服务器 编写一个服务器应用程序,它侦听给定的TCP端口,并以32位整数发送日期 格式化到客户端,如主机服务的标准日期。程序参数是端口号。
DateAthostclient.java
package DateAthostclient;
import java.net.*;
import java.io.*;
import java.util.*;
public class DateAthostclient {
static final int defaultPort = 37;
static final long offset = 2208988800L;
public static void main(String[] args) {
// TODO code application logic here
int portNumber;
Socket clientSocket;
DataInputStream timeStream;
String hostName;
switch(args.length) {
case 1: hostName = args[0];
portNumber = defaultPort;//dateAtHost Port;
break;
case 2: hostName = args[0];
portNumber = new Integer(args[1]).intValue();
break;
default:
hostName = "localhost";
portNumber = defaultPort;//dateAtHost Port;
}
try {
clientSocket = new Socket(hostName,portNumber);
timeStream = new DataInputStream(clientSocket.getInputStream());
int dateAtHost = timeStream.readInt() + (int)(1L<<32);
new Date().setTime((dateAtHost-offset)*1000);
System.out.println("It is " + new Date().toString() + " at " +hostName);
timeStream.close();
clientSocket.close();
}
catch (UnknownHostException {
System.err.println(" Unknown host error");
}
catch (ConnectException e) {
System.out.println(" Service unavailable on port "+portNumber+"of host "+hostName);
}
catch (IOException e) {
System.err.println(" Communication error occured\r\n "+e);
}
}
}
dayAtHostserver.java
package dayAtHostserver;
import java.net.*;
import java.io.*;
import java.util.*;
public class dayAtHostserver {
public final static int daytimePort = 13;
public static void main(String[] args) {
// TODO code application logic here
ServerSocket theServerSocket;
Socket theConnectionSocket;
PrintWriter out;
try {
theServerSocket = new ServerSocket(daytimePort);
System.out.println("Timeserver ready at port "+daytimePort);
try {
while (true) {
theConnectionSocket = theServerSocket.accept();
System.out.println("Request arrived!");
out = new PrintWriter(theConnectionSocket.getOutputStream(),true);
out.println(new Date());
theConnectionSocket.close();
}
}
catch (IOException e) {
theServerSocket.close();
System.err.println(e);
}
}
catch (IOException e) {
System.err.println(e);
}
}
}
DateAthostclient.java
包装日期在客户机上;
导入java.net。*;
导入java.io.*;
导入java.util.*;
公共类DateAthostclient{
静态最终int defaultPort=37;
静态最终长偏移量=2208988800L;
公共静态void main(字符串[]args){
//此处的TODO代码应用程序逻辑
int端口号;
插座客户端插座;
数据输入流时间流;
字符串主机名;
开关(参数长度){
案例1:hostName=args[0];
portNumber=defaultPort;//dateAtHost端口;
打破
案例2:hostName=args[0];
portNumber=新整数(args[1]).intValue();
打破
违约:
hostName=“localhost”;
portNumber=defaultPort;//dateAtHost端口;
}
试一试{
clientSocket=新套接字(主机名、端口号);
timeStream=新的DataInputStream(clientSocket.getInputStream());
int dateAtHost=timeStream.readInt()+(int)(1L1)1L int dateAtHost=timeStream.readInt()+(int)(1L)