📄 timeserver.java
字号:
package timeserver;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.Date;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class TimeServer
extends JFrame {
JPanel contentPane;
JTextField jTextField1 = new JTextField();
JLabel jLabel1 = new JLabel();
JButton jButton1 = new JButton();
JLabel jLabel2 = new JLabel();
JButton jButton2 = new JButton();
Socket socket;
ServerSocket server;
//Construct the frame
public TimeServer() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel)this.getContentPane();
jTextField1.setText("");
jTextField1.setBounds(new Rectangle(95, 26, 69, 25));
jTextField1.addKeyListener(new TimeServer_jTextField1_keyAdapter(this));
contentPane.setLayout(null);
this.setSize(new Dimension(179, 137));
this.setTitle("时间服务器");
jLabel1.setText("请输入端口号:");
jLabel1.setBounds(new Rectangle(7, 26, 80, 25));
jButton1.setBounds(new Rectangle(7, 61, 94, 25));
jButton1.setMargin(new Insets(2, 2, 2, 2));
jButton1.setText("建立Time服务器");
jButton1.addActionListener(new TimeServer_jButton1_actionAdapter(this));
jLabel2.setText("");
jLabel2.setBounds(new Rectangle(20, 89, 131, 25));
jButton2.setText("退出");
jButton2.addActionListener(new TimeServer_jButton2_actionAdapter(this));
jButton2.setMargin(new Insets(2, 2, 2, 2));
jButton2.setBounds(new Rectangle(120, 61, 44, 25));
contentPane.add(jTextField1, null);
contentPane.add(jLabel1, null);
contentPane.add(jLabel2, null);
contentPane.add(jButton1, null);
contentPane.add(jButton2, null);
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
public void start() { //启动Time服务器
int port = Integer.parseInt(jTextField1.getText()); //获得端口号
if (port >= 1025 && port <= 65535) { //检查端口号
long diffTime = 2208988800L; //1900至1970之间的秒数
try {
server = new ServerSocket(port); //以指定的端口号创建ServerSocket对象
while (true) {
try {
socket = server.accept();
OutputStream out = socket.getOutputStream();
Date date = new Date();
long ms = date.getTime();
long seconds1970 = ms / 1000;
long seconds1900 = seconds1970 + diffTime;
byte[] time = new byte[4];
time[0] = (byte) ( (seconds1900 & 0x00000000FF000000L) >> 24);
time[1] = (byte) ( (seconds1900 & 0x0000000000FF0000L) >> 24);
time[2] = (byte) ( (seconds1900 & 0x000000000000FF00L) >> 24);
time[3] = (byte) ( (seconds1900 & 0x00000000000000FFL) >> 24);
out.write(time); //将time写入输出缓冲区
out.flush();
}
catch (IOException err) {
System.out.println(err);
}
}
}
catch (IOException error) {
System.out.println(error);
}
}
}
void jButton1_actionPerformed(ActionEvent e) {
start(); //开始Time服务器
}
void jButton2_actionPerformed(ActionEvent e) {
try {
socket.close(); //关闭socket连接
System.exit(0); //退出程序
}
catch (IOException err) {
}
}
void jTextField1_keyPressed(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) { //如果按Enter键则开始Time服务器
start();
}
}
}
class TimeServer_jButton1_actionAdapter
implements java.awt.event.ActionListener {
TimeServer adaptee;
TimeServer_jButton1_actionAdapter(TimeServer adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class TimeServer_jButton2_actionAdapter
implements java.awt.event.ActionListener {
TimeServer adaptee;
TimeServer_jButton2_actionAdapter(TimeServer adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class TimeServer_jTextField1_keyAdapter
extends java.awt.event.KeyAdapter {
TimeServer adaptee;
TimeServer_jTextField1_keyAdapter(TimeServer adaptee) {
this.adaptee = adaptee;
}
public void keyPressed(KeyEvent e) {
adaptee.jTextField1_keyPressed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -