⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timeserver.java

📁 Socket起步(时间服务器
💻 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 + -