时间同步 时间同步一般都是用操作系统自己的功能。Windows 2000/Redhat Linux8 都有。Java 中只有System.currentTimeMillis() 取时间,没有 getTime 函数,怎么做?时间协议倒是很简单。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NTP 协议在网络上可以搜索到 是指两台机子的时间同步吗如果要求不是太高,可以这样,在一太机子上运行时间服务器(监听时间服务请求),另一台机子上想得到另一台机子时间时,向另一台机子发送请求,并且把自己机子的当前时间也封装在请求中(假设为T0),服务器返回它的时间(假设为TIME),以及客户的时间(T0),客户机得到回复时取得本地当前时间T1,则TIME+(T1-T0)/2就是服务器的时间(即:考虑网络延迟,并假设网络速度是比较均匀的)这个方法在LAN中效果不错,但在INTERNET中你就要考虑更好的协议的(可以参考《INTERNETWOKING/WINSOCK VERSION〉) 书名写错了,是<INTERNETWOKING WITH TCP/IP>DOGLAS E. COMER WINSOCK EDITION 谢谢,这个问题已经解决了,用了windows 系统自带的w32time来实现的,客户端用applet。并对applet用了数字签名。具体代码如下:请指正:// TestApplet.javaimport 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; }} Applet 能够设置时间?有安全性限制吧? 是否可以更改根帖 java面试题 进来看看 解析properties报错啊!!!!!!!! 请问swing问题? 请教stack压入实数的问题 想请教一下大家,有关GUI中的各个类的问题 关于log4j 找到心爱的女孩了~开心~散分~~~~~ 一个简单的输入流的问题! ibatis执行查询语句,可以在plsql中查询数据,但是在程序中查询不到,求大神帮忙 现在很少人用的Swing是否不用学了?(初学者) About Jbuilder
如果要求不是太高,可以这样,在一太机子上运行时间服务器(监听时间服务请求),另一台机子上想得到另一台机子时间时,向另一台机子发送请求,并且把自己机子的当前时间也封装在请求中(假设为T0),服务器返回它的时间(假设为TIME),以及客户的时间(T0),客户机得到回复时取得本地当前时间T1,则TIME+(T1-T0)/2就是服务器的时间(即:考虑网络延迟,并假设网络速度是比较均匀的)
这个方法在LAN中效果不错,但在INTERNET中你就要考虑更好的协议的(可以参考《INTERNETWOKING/WINSOCK VERSION〉)
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;
}
}