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

📄 clientapplet.java

📁 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;                //I/O管道
   BufferedReader  read;

   Thread          T;                    //用来接收讯息的线程
   
   Font            F;
   Panel           south;
   Button          sendMessage;
   TextArea        Message;
   TextField       send;

   public void init()
   {
      setLayout(new BorderLayout());     //使用BorderLayout

      dead        = false;
 
      //建立接口相关AWT组件
      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);        //建立插座
     
         //建立I/O管道
         write   = new PrintStream(cSocket.getOutputStream());
         read    = new BufferedReader(
                       new InputStreamReader(cSocket.getInputStream())); 
      }
      catch(UnknownHostException E)                //建立插座失败
      {
         Message.append("发生异常: 无法识别的主机!");
         sendMessage.setEnabled(false);
      }
      catch(IOException E)                         //建立I/O管道失败
      {
         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);     //将讯息加入TextArea中
            }
         }
         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;                //释放资源
   }

   //=====实现ActionListener=========================================
   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 + -