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

📄 clientapplet.java

📁 Java2游戏编程源码 第九章 很好的学习Java和简单游戏编程的书籍
💻 JAVA
字号:
// 程序:多人聊天室客户端程序
// 范例文件:ClientApplet.java

import java.io.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.awt.event.*;

public class ClientApplet extends Applet 
       implements Runnable,ActionListener
{
   int             sPort;    
   String          sName;  
   Socket          cSocket;     
   boolean         dead; 
    
   PrintStream     write;   
   BufferedReader  read;

   Thread          T;        
   
   Font            F;
   Panel           south;
   Button          sendMessage;
   TextArea        Message;
   TextField       send;

   public void init()
   {
      setLayout(new BorderLayout()); 

      dead        = false;
 

      F           = new Font("Dialog",Font.BOLD,16);
      south       = new Panel();
      sendMessage = new Button("传送讯息");
      Message     = new TextArea();
      send        = new TextField(40);

      south.add(send); 
      south.add(sendMessage);
      
      Message.setFont(F);          
      Message.setEditable(false);       
      Message.append("欢迎使用良葛格的聊天室\n\n");
      Message.setBackground(Color.black);   
      Message.setForeground(Color.white);  

      add(south,BorderLayout.SOUTH);
      add(Message,BorderLayout.CENTER);
   
      sendMessage.addActionListener(this);  

      try
      {
         sPort   = 6633;         
         sName   = getDocumentBase().getHost();
         cSocket = new Socket(sName,sPort);  
     
         write   = new PrintStream(cSocket.getOutputStream());
         read    = new BufferedReader(
                       new InputStreamReader(cSocket.getInputStream())); 
      }
      catch(UnknownHostException E)  
      {
         Message.append("发生例外: 无法识别的主机!");
         sendMessage.setEnabled(false);
      }
      catch(IOException E)   
      {
         Message.append("发生例外: 建立I/O管道失败!");
         sendMessage.setEnabled(false);
      }

      T = new Thread(this);   
      T.start();     
   }

   public void run()
   {
      String m;

      while(!dead)
      {
         try
         {
            m = read.readLine();  
 
            if(m != null)
            {
               Message.append("\n" + m); 
            }
         }
         catch(IOException E)   
         {
            Message.append("\n\n远端服务器已关闭或网路连线发生错误...");
            Message.append("\n\n请尝试重新连线...");
            sendMessage.setEnabled(false);

            break;
         }
      }
   }

   public void finalize()
   {
      try
      {
         read.close();
         write.close();
         cSocket.close();  
      }
      catch(IOException E){}
     
      cSocket = null;   
   }

   public void actionPerformed(ActionEvent e)
   {
      if(send.getText().equals("")) 
      {
         return;
      }
      else if(send.getText().equals("bye"))
      {
         dead = true;

         Message.append("\n已结束连线.....");
      }

      write.println(send.getText()); 
      send.setText("");     
   }
}

⌨️ 快捷键说明

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