NTP for TCP / IP(服务器 - 客户端)

时间:2013-05-10 10:19:53

标签: java client-server ntp

我有一个简单的服务器...

public static void main(String[] args) throws Exception{
    ServerSocket server = new ServerSocket(2000);
    Socket sock = server.accept();
    InputStream  in = sock.getInputStream();
    OutputStream out = sock.getOutputStream();
    PrintWriter w = new PrintWriter(out);
    Scanner s = new Scanner(in);
    ...

和一个简单的客户......

public static void main(String[] args) throws Exception{
    Socket sock = new Socket("localhost",2000);;
    InputStream in= sock.getInputStream();
    OutputStream out = sock.getOutputStream();
    PrintWriter w  = new PrintWriter(out);
    Scanner s = new Scanner(in);
    ....

- 我可以将更多客户端连接到此服务器吗? (我还需要2个) - 此外,我想从服务器发送系统时间到客户端,然后客户端将发送 每个时间10次加上一些固定延迟(0.5-1秒)然后服务器必须找到所有延迟的平均值并将其作为新时间发送回客户端...

谢谢你的时间......

1 个答案:

答案 0 :(得分:0)

System.currentTimeMillis()提供系统时间

server.accept()返回的每个Socket都是一个单独的对象,您的服务器可以通过每个Socket对象与每个客户端独立通信。但是,由于您的应用程序是时间敏感的,我建议为每个客户端使用单独的线程。

一个简单的服务器就是:

ServerSocket serverSock = new ServerSocket(2000);

while (true)
{
    Socket fpSock = serverSock.accept();
    MyThread t = new MyThread(fpSock, this);
    t.start();
}

您需要的处理将在MyThread run()方法中完成。 “this”被传递给线程以提供引用,其中每个线程可以回调主类中的方法。确保制作此类方法synchronized

您也不一定需要将服务器的时间发送到客户端,只需发送客户端希望回送的通用数据包。对所有事务使用服务器的时间戳,以避免客户端系统时间的变化。