Java 命令行DateAthost客户端

Java 命令行DateAthost客户端,java,tcp,network-programming,Java,Tcp,Network Programming,编写一个客户端应用程序,在打印新值之后,将机器时间设置为给定主机 日期。应用程序使用TCP端口37中提供的标准主机日期服务。 参数是主机名和端口号。端口号的默认值为37。如果 程序运行时没有参数,它与本地主机通信。程序使用标准 输出以打印信息。 重要提示: dateAtHost服务提供一个带符号的32位整数,自1月1日起的秒数, 1990 DateAtHost服务器 编写一个服务器应用程序,它侦听给定的TCP端口,并以32位整数发送日期 格式化到客户端,如主机服务的标准日期。程序参数是端口号。

编写一个客户端应用程序,在打印新值之后,将机器时间设置为给定主机 日期。应用程序使用TCP端口37中提供的标准主机日期服务。 参数是主机名和端口号。端口号的默认值为37。如果 程序运行时没有参数,它与本地主机通信。程序使用标准 输出以打印信息。 重要提示: dateAtHost服务提供一个带符号的32位整数,自1月1日起的秒数, 1990 DateAtHost服务器 编写一个服务器应用程序,它侦听给定的TCP端口,并以32位整数发送日期 格式化到客户端,如主机服务的标准日期。程序参数是端口号。 端口号的默认值为37。程序使用标准输出打印信息

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)