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

📄 chatclient.java

📁 一个Java编写的聊天室小程序
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class ChatClient
 {
   private static String name;
   private static String host;
   private static int port;
   private static int cport;

   
   JPanel jpanel=new JPanel(new FlowLayout());
   JTextField jtextfield=new JTextField(22);
   JLabel jlabel=new JLabel("Message:");
   JTextArea jtextarea=new JTextArea(15,28);
   JScrollPane jscrollpane=new JScrollPane(jtextarea);
   JButton jbutton1=new JButton("Quit");
   JButton jbutton2=new JButton("Clear");
   JButton jbutton3=new JButton("Send");
   JFrame jframe=new JFrame("Chat Client");

   public static void main(String args[]) throws Exception
   {
    int defaultport=1234;
    String defaulthost="127.0.0.1";
    String defaultname="20023378";
    if(args.length<3)
     {
      name=defaultname;
      host=defaulthost;
      port=defaultport;
     }
      else
     {
      name=args[0];
      host=args[1];
      port=Integer.parseInt(args[2]);
    }
     new ChatClient();
    }
  
   public ChatClient()
    {
     jtextarea.setText("Welcome to join us!");
     jtextarea.setEditable(false);
     jpanel.add(jlabel);
     jpanel.add(jtextfield);
     jpanel.add(jscrollpane);
     jpanel.add(jbutton2);
     jpanel.add(jbutton1);
     jframe.getContentPane().add(jpanel);
     jframe.setSize(320,367);
     jframe.show();

     jbutton1.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e)
       {
        quit();
       }
      });

      jbutton2.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e)
        {
          jtextarea.setText("");
        }
       });

      jtextfield.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e)
       {
        try
         {
          String message=jtextfield.getText();
         if(message.equalsIgnoreCase("Quit"))
         {
           quit();
         }
          else
         {
          InetAddress server=InetAddress.getByName(host);
          DatagramSocket dsocket=new DatagramSocket();
          try
            {
             String messageshow=jtextarea.getText();
             jtextfield.setText("");
             String messages=name+":"+message;
             byte[] data=message.getBytes();
             DatagramPacket theOutput=new DatagramPacket(data,data.length,server,cport);
             dsocket.send(theOutput);
            }
             catch(UnknownHostException ex){System.err.println(ex);}
             catch(SocketException exc){System.err.println(exc);}
             catch(IOException ex){System.err.println(ex);}
             catch(Exception ex){System.err.println(ex);}
            }
           }
            catch (Exception ex){System.err.println(ex);}
          }
         });

          jframe.addWindowListener(new WindowAdapter()
           {
            public void windowClosing(WindowEvent e)
             {
               quit();
             }
            });
      
           try
             {
               Socket csocket=new Socket(host,port);
               BufferedReader brin=new BufferedReader(new InputStreamReader(csocket.getInputStream()));
               PrintWriter pwout=new PrintWriter(csocket.getOutputStream());
               String na="HELLO"+' '+name+'\n';
               String string=jtextarea.getText();
              jtextarea.setText(string+"\n"+"HELLO "+name);
               pwout.println(na);
               pwout.flush();

               BufferedReader brin2=new BufferedReader(new InputStreamReader(csocket.getInputStream()));
               String welcome=brin2.readLine().substring(8);
               cport=Integer.parseInt(welcome);
               string=jtextarea.getText();
               jtextarea.setText(string+"\nYour UDP Port is "+cport);
                 brin=new BufferedReader(new InputStreamReader(csocket.getInputStream()));
               while(true)
             {
               try
               {
                String message=brin.readLine();
                   String s=jtextarea.getText();
                jtextarea.setText(s+"\n"+message);
              }
            catch (Exception e)
           {
             String s=jtextarea.getText();
              jtextarea.setText(s+"\nQuit Server");
               break;
           }
          }
         }
         catch (IOException e){System.out.println(e);}
          }
      
       public void quit()
        {
         try
          {
           InetAddress server=InetAddress.getByName(host);
           DatagramSocket dsocket=new DatagramSocket();
           String message=jtextfield.getText();
          try
           {
 
             message=name+" has left the chatroom.";
             byte[] data=message.getBytes();
             DatagramPacket theOutput=new DatagramPacket(data,data.length,server,cport);
             dsocket.send(theOutput);
           }
           catch(UnknownHostException ex){System.err.println(ex);}
           catch(SocketException exc){System.err.println(exc);}
           catch(IOException ex){System.err.println(ex);}
           }
           catch (Exception ex){System.err.println(ex);}
           System.exit(0);
          }
         }




















   

⌨️ 快捷键说明

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