guessclient.java

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

JAVA
129
字号
     import java.awt.*;
     import java.awt.event.*;
     import java.applet.*;
     import java.net.*;

     public class GuessClient extends Applet implements ActionListener
     {
          public final static int DEFAULT_PORT = 1234;

          // 供用户输入的TextField
          private TextField textField;

          // 提交猜测结果的按钮
          private Button button;

          // 显示从服务器传来的消息
          private Label message;

          // 和服务器通信用的连接 
          private AbstractConnection client;

          public void init()
          {
               textField = new TextField("", 10);
               add(textField);

               button = new Button("Guess!");
               button.addActionListener(this);
               add(button);

               message = new Label();
               add(message);

               // 得到作为applet参数的端口号
               int port = Integer.parseInt(getParameter("Port"));
               if (port == 0)
               {
                    port = DEFAULT_PORT;
               }
                 
               // 得到作为applet参数的主机名
               try
               { 
                    // 创建客户端
                    client = new AbstractConnection(new Socket(getParameter("Host"), port));

                    // 打开客户连接                    
                    if(! client.open())
                    {
                         message.setText("Could not open connection " + 
                                          getParameter("Host") + " : " + port);
                    }
               }
               catch(Exception e)
               {
                    message.setText("Could not open connection " + 
                                     getParameter("Host") + " : " + port);
                    disableControls();
                    return;
               }

          }

          public void start()
          {
               String str = "";

               // 等待初始化服务消息
               client.recv();

               str = client.parseHeader();
               if(str.equals("Prompt"))
               {
                    message.setText(client.parseMessage());
               }
               else
               {
                    message.setText("Unrecognized server response");
                    disableControls();
                    return;
               }
          }

          private void disableControls()
          {
               textField.setEnabled(false);      
               button.setEnabled(false);
          }

          public void actionPerformed(ActionEvent e)
          {
               // 如果文本域是空的则什么也不做
               if(textField.getText().trim().equals("")) return;

               // 临时禁止输入按钮
               button.setEnabled(false);

               // 把猜测结果发送到服务器
               client.send("Guess", textField.getText().trim());                          

               // get the server response               
               String str = "";
               client.recv();
               str = client.parseHeader();               

               // 服务器会在终止服务前发出一个回显命令
               if(str.equals("Echo"))
               {
                    // 接收消息直到 EOT
                    while(! str.equals(AbstractConnection.END_OF_TRANSMISSION))
                    {
                         message.setText(client.parseMessage());
                         client.recv(); 
                         str = client.parseHeader();
                    } 
                    disableControls();
                    return;
               }

               // 如果有提示命令则设置消息标签文本               
               else if(str.equals("Prompt"))
               {
                    message.setText(client.parseMessage());
               }     

               button.setEnabled(true);
          }

     }    // GuessClient

⌨️ 快捷键说明

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