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

📄 chatclient.java

📁 基于TCP/IP的在线聊天系统
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class ChatClient extends Frame implements ActionListener{
   private final String s_ip = "192.168.0.62";
   private final int s_port= 8080;
   private String serverIP = s_ip;
   private int serverPort = s_port;
   private Socket connection = null;
   private BufferedReader in = null;
   private PrintStream out = null;
   private TextArea output1;
   private TextArea output2;
   private TextArea input;
   private Button sendButton;
   private Button clear;
   private Button quitButton;
   private Label lb1;
   private Label lb2;
   private Label lb3;
   private Label lb4;
   private Choice user;
   private Color c;
   private Key hh = new Key();//.........
//01
   public ChatClient(){
    output1 = new TextArea(19,28);
    output2 = new TextArea(19,12);
    input = new TextArea(5,30);
    lb1 = new Label("信息栏:");
    lb2 = new Label("用户栏:");
    lb3 = new Label("发送给:");
    lb4 = new Label("消息");
    user = new Choice();
    sendButton = new Button("  发送  ");
    clear = new Button("  清除  ");
    quitButton = new Button("  退出  ");
    addKeyListener(hh);//................
    }
//02
  public void displayFrame(){

   Panel b01 = new Panel();//...........信息栏
   b01.setLayout(new BorderLayout());
   b01.add("West",lb1);
   b01.add("South",output1);

   Panel b02 = new Panel();//..........用户栏
   b02.setLayout(new BorderLayout());
   b02.add("West",lb2);
   b02.add("South",output2);

   Panel b1 = new Panel();//........输出面版1
   b1.setLayout(new BorderLayout());
   b1.add("West",b02);
   b1.add("Center",b01);
   
   Panel b2 = new Panel();//........下拉列表面版2
   Panel b11 = new Panel();
   Panel b12 = new Panel();
   Panel b13 = new Panel();
   Panel b14 = new Panel();
   Panel b15 = new Panel();
   Panel b16 = new Panel();
   Panel b17 = new Panel();
   user.add("所有人");
   b2.setLayout(new GridLayout(1,7));
   b2.add(b11);
   b2.add(b12);
   b2.add(b14);
   b2.add(b15);
   b2.add(b16);
   b14.add(lb3);
   b15.add(user);
   b16.add(lb4);
   b2.add(b13);
   b2.add(b17);

   Panel b4 = new Panel();//..........按纽编排
   Panel b21 = new Panel();
   Panel b22 = new Panel();
   Panel b23 = new Panel();
   Panel b24 = new Panel();
   Panel b25 = new Panel();
   Panel b26 = new Panel();
   Panel b27 = new Panel();
   b4.setLayout(new GridLayout(1,7));
   b4.add(b21);
   b4.add(b22);
   b4.add(b23);
   b22.add(clear);
   b24.add(sendButton);
   b26.add(quitButton);
   b4.add(b24);
   b4.add(b25);
   b4.add(b26);
   b4.add(b27);

   Panel b3 = new Panel();//.........输入面版3
   b3.setLayout(new BorderLayout());
   b3.add("North",input);
   b3.add("Center",b4);

   setTitle("Chat system");//..........
   setLayout(new BorderLayout());
   add("North",b1);
   add("Center",b2);
   add("South",b3);//更改
   
   c = new Color(230,230,230);
//.........................................
   addWindowListener(new CloseWindow());
   sendButton.addActionListener(this);
   quitButton.addActionListener(this);
   clear.addActionListener(this);
   connect();//...............
   setLocation(280,30);
   setSize(500,530);
   setVisible(true);
   setBackground(c);
   lb1.setBackground(c);
   lb2.setBackground(c);
   lb3.setBackground(c);
   lb4.setBackground(c);
   input.requestFocus();//......
  }
//03
  private void connect(){
    try{
     connection = new Socket(serverIP,serverPort);
     in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
     out = new PrintStream(connection.getOutputStream());
     Thread t = new Thread(new RemoteReader());
     t.start();
    String str = in.readLine();//;;;;;;;;;;;;;
     output2.append(str + "\n");//;;;;;;;;;;;
     }catch(Exception e){
      System.out.println(e);
     }
 }
//04-----0
private class Key extends KeyAdapter{
   public void keyPressed(KeyEvent ke){
      if(ke.getKeyChar() == 'g')
      {String text = input.getText();
      out.println(text);
      input.setText("");}
      }
}
//04----1
public void actionPerformed(ActionEvent e){
   if(e.getActionCommand().equals("  发送  ")){//51
     String text = input.getText();
     out.println(text);
     input.setText("");}
   else if(e.getActionCommand().equals("  清除  ")){
          output1.setText("");}
   else{
      System.exit(0);
     }
  input.requestFocus();
  }
//05
private class CloseWindow extends WindowAdapter{
   public void windowClosing(WindowEvent e){
      System.exit(0);
     }
  }
//06
private class RemoteReader implements Runnable{
   private boolean keepConnected =true;
   public void run(){
   while(keepConnected==true){
    try{
     String str = in.readLine();
     if(str.equals("STUDENT13 :")||str.equals("*k"))
     {output2.append(str + "\n");
     }
     else{
     	output1.append(str + "\n");
     }
    }catch(Exception e){
      keepConnected = false;//改正
      System.out.println(e);
     }
    } 
   }
 }
//07....179
 public static void main(String ages[]){
  ChatClient chatClient = new ChatClient();
   chatClient.displayFrame();
 }
//
}

⌨️ 快捷键说明

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