时间同步一般都是用操作系统自己的功能。Windows 2000/Redhat Linux8 都有。
Java 中只有System.currentTimeMillis() 取时间,没有 getTime 函数,怎么做?
时间协议倒是很简单。

解决方案 »

  1.   

    NTP 协议在网络上可以搜索到
      

  2.   

    是指两台机子的时间同步吗
    如果要求不是太高,可以这样,在一太机子上运行时间服务器(监听时间服务请求),另一台机子上想得到另一台机子时间时,向另一台机子发送请求,并且把自己机子的当前时间也封装在请求中(假设为T0),服务器返回它的时间(假设为TIME),以及客户的时间(T0),客户机得到回复时取得本地当前时间T1,则TIME+(T1-T0)/2就是服务器的时间(即:考虑网络延迟,并假设网络速度是比较均匀的)
    这个方法在LAN中效果不错,但在INTERNET中你就要考虑更好的协议的(可以参考《INTERNETWOKING/WINSOCK VERSION〉)
      

  3.   

    书名写错了,是<INTERNETWOKING WITH TCP/IP>DOGLAS E. COMER WINSOCK EDITION
      

  4.   

    谢谢,这个问题已经解决了,用了windows 系统自带的w32time来实现的,客户端用applet。并对applet用了数字签名。具体代码如下:请指正:// TestApplet.java
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import javax.swing.*;
    import javax.swing.border.*;public class TestSync extends Applet
    { private String IPAdress = "load"; public void init() 
    {
    String strIPAddress = getParameter("ipAddress");
    System.out.println("IP address is: " + strIPAddress);
    timeSync(strIPAddress);
    try 
    { } 
    catch(Exception e) 
    {
    e.printStackTrace();
    }
    }
    public void paint(Graphics g)
    {
    g.drawString (IPAdress,2,20);
    }
    public void timeSync(String strIPAddress)
    {
    Process process;
    boolean isOK = getWinVersion();
    if(isOK)
    { try
    {
    process = Runtime.getRuntime().exec("net time file://" + strIPAddress + "/ /set /yes");
    IPAdress = "OK";
    }
    catch(Exception e)
    {
    IPAdress = e.getMessage();
    }
    }
    else
    { try
    {process = Runtime.getRuntime().exec("net time /setsntp:" + strIPAddress); process = Runtime.getRuntime().exec("net stop w32time"); process = Runtime.getRuntime().exec("net start w32time");
    process = Runtime.getRuntime().exec("net stop w32time"); IPAdress = "OK";
    }
    catch(Exception e)
    {
    IPAdress = e.getMessage();
    }

    } public boolean getWinVersion()
    {
    boolean isWin = false;
    double dblVersion = Double.parseDouble(System.getProperty("os.version"));
    if(dblVersion >= 4.0 && dblVersion < 5.0)
    {
    isWin = true;
    }
    else
    {
    isWin = false;
    }
    return isWin;
    }
    }
      

  5.   

    Applet 能够设置时间?有安全性限制吧?