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

📄 chatclient2.java

📁 一个很好的JAVA聊天室系统 可以在课堂里实践并且进行聊天
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.*;


public class chatclient2 extends Thread
{
    Login login=null;
    TextField user=new TextField(20);
    TextField host=new TextField(20);
    TextArea log=new TextArea(20,55);

    TextField message=new TextField(40);
    Button connect=new Button("Connet");
    Button cancle1=new Button("Cancle");
    Dialog err;    
    Button cancle2=new Button();
    Socket chSocket = null;
    PrintStream os;
//    DataInputStream is;
    BufferedReader reader;
    Frame f;
    chatclient2 client;
    ThreadGroup tg;

    public  chatclient2(ThreadGroup tg, String name) {  // construction
         super(tg, name); }
        
    public void run() { this.initForm(); }

    void setThreadGroup(ThreadGroup g, chatclient2 client) {
         this.tg=g;  this.client=client; }

    public static void main(String[] args) {
          ThreadGroup tg1 = new ThreadGroup("tg1");
          
          chatclient2 client = new chatclient2(tg1,"client");
          client.setThreadGroup(tg1, client);
          client.start(); }

    String getData()
     {
      String fromServer=null;
      try
        {
          fromServer=reader.readLine();  // is.readLine();
        }
      catch(Exception e)
        {
          log.setText("Exception:"+e);
          System.out.println("Exception in getData():"+e);                     
          return null;
        }
      return fromServer;
     }

    boolean sendData(String toServer)
     {
      try
        {
          os.println(toServer);
          os.flush();
        }
      catch(Exception e) {
          log.setText("Exception:"+e);
          System.out.println("Exception in sendData:"+e);
          return false; }
      return true;
     }

    boolean connectHost(String hostName)  
     { 
      try { 
            chSocket = new Socket(hostName,6001);
            InputStream is = chSocket.getInputStream();
            reader=new BufferedReader(new InputStreamReader(is));
            os=new PrintStream(chSocket.getOutputStream());
          }
      catch(UnknownHostException e)
          {
            log.setText("Trying to connet to unknow Host:"+e);
            System.out.println("Trying to connet to unknow Host:"+e);
            return false;
          }
      catch(Exception e)
          { 
            System.out.println(e.toString());
            return false;
          }
      return true;
     }

     void cancle1_mouseClicked(MouseEvent e) { System.exit(0); }

     void cancle2_mouseClicked(MouseEvent e)
         {
           err.dispose();
         }

    void initForm()
     {    f = new Frame("Chatclient2");
          f.setBackground(Color.white);
          f.setLayout(new BorderLayout());
          f.setSize(300,150);
//          this.setName("Client");
          Panel p1=new Panel();
	  p1.setLayout(new BorderLayout());
//          this.add("center",p1);
          Panel p2=new Panel();
          p2.add("West",new Label("User Name"));
          user.setText("");
          p2.add("East",user);
          p1.add("North",p2);
          Panel p3=new Panel();
          p3.add("West",new Label("Host name"));
          host.setText("localhost");
          p3.add("East",host);
          p1.add("Center",p3);
          Panel p4=new Panel();
          p4.add("West",connect);
          p4.add("East",cancle1);
          p1.add("South",p4);
          log.setEditable(false);
          f.add("Center",p1);  
          f.setLocation(200,200);
          f.setVisible(true); // new added
          cancle2.addMouseListener(new java.awt.event.MouseAdapter() { 
            public void mouseClicked(MouseEvent e) {
                   cancle2_mouseClicked(e); }
            });
          message.addActionListener(new java.awt.event.ActionListener()
            {
              public void actionPerformed(ActionEvent e)
                {
                  message_actionPerformed(e);
                }
            });
          connect.addMouseListener(new java.awt.event.MouseAdapter() {
              public void mouseClicked(MouseEvent e) {
              connect_mouseClicked(e); }
            });
          cancle1.addMouseListener(new java.awt.event.MouseAdapter()
            {
              public void mouseClicked(MouseEvent e)
                {
                  cancle1_mouseClicked(e); }
            });
          f.addWindowListener(new java.awt.event.WindowAdapter()
            {
              public void windowClosing(WindowEvent e)
                {
                  System.exit(0); }
            });

     }      
     void closeSocket() {
              try {
                    os.close();
                    reader.close();   
                    chSocket.close(); }
              catch(Exception e)
                  {
                    log.setText("Exception:"+e);
                    System.out.println("Exception in closeData:"+e);
                   }
             }

     void connect_mouseClicked(MouseEvent e) 
             {
                if (!this.user.getText().equals(""))
                   if (connectHost(host.getText()))
                      {
                        f.removeAll();
                        login=new Login(client);
                        login.start();
                        f.setTitle("Client-user ["+user.getText()+"]");
                        f.setLayout(new BorderLayout());
                        Panel p1=new Panel();
                        p1.setLayout(new BorderLayout());
                        Panel p2=new Panel();
                        p2.add("Center",log);
                        p1.add("North",p2);
                        Panel p3=new Panel();
                        p3.add("West",new Label("Message"));
                        p3.add("Center",message);
                        p1.add("Center",p3);
                        f.add("Center",p1);
                        log.setText("");
                        message.setText("");
                        f.setSize(420,420);  //  new added
                        f.setVisible(true);
                        sendData(user.getText());
                      }  
                   else  
                      { showDialog("Can't connect to Host:"+host.getText(),"OK"); }
                 else
                      showDialog("Username cann't be empty","ok");
             }

     void showDialog(String Warning,String label)
         {
                 err=new Dialog(new Frame(),"Error!",true);
                 err.setLayout(new BorderLayout());
                 Panel t1=new Panel();  
                 t1.setLayout(new BorderLayout());
                 t1.add("East",new Label("       "));
                 t1.add("West",new Label("       "));
                 t1.add("Center",cancle2);
                 cancle2.setLabel(label); 
                 err.setSize(200,100);
                 err.add("South",t1);
                 err.add("Center",new Label(Warning));
                 err.show();
         }
  
     void message_actionPerformed(ActionEvent e)
         { 
                 String msg=null;
                 msg=message.getText(); 
                 sendData(user.getText()+": "+msg);
                 message.setText("");
                 if(msg.equals("\\bye"))
                   {
                     // login.interrupt();
                     closeSocket();
                     System.exit(0);
                   }
         }
 
class Login extends Thread
   { 
     chatclient2 client=null;
     public Login(chatclient2 client) { this.client=client; }
     public void run()
           {
             String fromServer=null; 
             String msg=null;
             while((fromServer=client.getData())!=null)
                 client.log.append(fromServer+"\n");
           }
    }
}

⌨️ 快捷键说明

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