simplechatserver.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 114 行

JAVA
114
字号
     import java.io.*;
     import java.applet.*;
     import java.awt.*;
     import java.awt.event.*; 
     import java.net.*;
     import java.util.*;

     public class SimpleChatServer extends Applet implements ActionListener
     {
          protected static final String WELCOME_MSG = 
                "<Server>: Welcome to the chat server!  " +
                "If you're new, feel free to join in on the conversation!";

          // 发送/接收多点传送消息的连接 
          protected MulticastConnection service;

          // 内部服务器消息用的文本域
          protected TextArea textArea;

          // 终端服务器连接
          protected Button terminate;

          // 显示欢迎消息的计时器
          protected Timer msgTimer;

          public void init()
          {
               textArea = new TextArea("", 15, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
               textArea.setEditable(false);
               add(textArea);

               terminate = new Button("Terminate Service");
               terminate.addActionListener(this);
               add(terminate);

               String address = "224.0.0.21";
               int port       = MulticastConnection.DEFAULT_PORT;

               // 建立连接
               try
               {
                    service = new MulticastConnection(address, port);
                    textArea.append("System Message: Java Chat Server online\n");
               }
               catch(Exception e)
               {
                    textArea.append("System Error: Could not create Chat Server! " + e + "\n");
                    terminate.setEnabled(false);
               }
               msgTimer = null;
          }

          public void start()
          {
               if(! terminate.isEnabled()) return;

               // 创建一个计时器来对新用户输出欢迎信息
               TimerTask task = new TimerTask()
                   {
                        public void run()
                        {
                             synchronized(this)
                             {
                                  service.send(WELCOME_MSG);                        
                             }
                        }
                   }; 

               msgTimer = new Timer(true);
               msgTimer.scheduleAtFixedRate(task, 1000, 60000);

               // 将到来的消息添加到文本域中     
               synchronized(terminate)
               {
                    while(terminate.isEnabled())
                    {
                         textArea.append(service.recv()+"\n");
                    } 
               }

               // 终止欢迎服务
               textArea.append("System Message: Java Chat Server going offline...\n");
               service.disconnect();
               msgTimer = null;
               textArea.append("System Message: Java Chat Server connection terminated.\n");
          }

          public void actionPerformed(ActionEvent e)
          {
               terminate.setEnabled(false);
          }

          public static void main(String[] args)
          {
               // 创建一个SimpleChatServer并把它添加到Frame中
               Applet a = new SimpleChatServer();

               a.init();
               Frame f = new Frame("Java Chat Server");
               f.setSize(600, 320);
               f.addWindowListener(new WindowAdapter()
                    {
                         public void windowClosing(WindowEvent e) 
                         {
                              System.exit(0);
                         }
                    } );

               f.add(a);
               f.show();
               a.start();
          }
     }     

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?