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

📄 clientframe.java

📁 在主函数中建立一个服务器套接字端口
💻 JAVA
字号:
package chatclient;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import com.borland.dbswing.*;

import java.net.*;
import java.io.*;
import java.util.*;

public class ClientFrame extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  JPanel jPanel1 = new JPanel();
  XYLayout xYLayout1 = new XYLayout();
  JLabel jLabel1 = new JLabel();
  JTextField jTextField1 = new JTextField();
  JLabel jLabel2 = new JLabel();
  JTextField jTextField2 = new JTextField();
  JLabel jLabel3 = new JLabel();
  JTextField jTextField3 = new JTextField();
  JButton jButton1 = new JButton();
  JRadioButton jRadioButton1 = new JRadioButton();
  JRadioButton jRadioButton2 = new JRadioButton();
  JTextField jTextField4 = new JTextField();
  JButton jButton2 = new JButton();
  JButton jButton3 = new JButton();
  ButtonGroup buttonGroup1 = new ButtonGroup();
  JScrollPane jScrollPane1 = new JScrollPane();
  JScrollPane jScrollPane2 = new JScrollPane();
  JList jList1 = new JList();
  JTextArea jTextArea1 = new JTextArea();

    Socket socket=null;
    BufferedReader cin;
    PrintStream cout;

    String clientName="";


  //Construct the frame
  public ClientFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(borderLayout1);
    this.setSize(new Dimension(600, 300));
    this.setTitle("聊天系统——客户端");
    jPanel1.setBackground(SystemColor.inactiveCaptionText);
    jPanel1.setFont(new java.awt.Font("Dialog", 0, 12));
    jPanel1.setLayout(xYLayout1);
    jLabel1.setFont(new java.awt.Font("Dialog", 0, 12));
    jLabel1.setText("服务器IP:");
    jTextField1.setFont(new java.awt.Font("Dialog", 0, 12));
    jTextField1.setSelectionStart(11);
    jTextField1.setText("127.0.0.1");
    jLabel2.setFont(new java.awt.Font("Dialog", 0, 12));
    jLabel2.setText("端口:");
    jTextField2.setFont(new java.awt.Font("Dialog", 0, 12));
    jTextField2.setSelectionStart(11);
    jTextField2.setText("6544");
    jLabel3.setFont(new java.awt.Font("Dialog", 0, 12));
    jLabel3.setText("用户名:");
    jTextField3.setSelectionStart(11);
    jTextField3.setText("");
    jButton1.setFont(new java.awt.Font("Dialog", 0, 12));    jButton1.setAlignmentY((float) 0.5);
    jButton1.setVerifyInputWhenFocusTarget(true);
    jButton1.setText("连接服务器");
    jButton1.addActionListener(new ClientFrame_jButton1_actionAdapter(this));
    jRadioButton1.setBackground(SystemColor.inactiveCaptionText);
    jRadioButton1.setFont(new java.awt.Font("Dialog", 0, 12));
    jRadioButton1.setSelected(true);
    jRadioButton1.setText("广播");
    jRadioButton2.setBackground(SystemColor.inactiveCaptionText);
    jRadioButton2.setFont(new java.awt.Font("Dialog", 0, 12));
    jRadioButton2.setText("特定用户");
    jTextField4.setFont(new java.awt.Font("Dialog", 0, 12));
    jTextField4.setText("");
    jButton2.setBackground(SystemColor.activeCaptionText);
    jButton2.setFont(new java.awt.Font("Dialog", 0, 12));
    jButton2.setText("发送信息");
    jButton2.addActionListener(new ClientFrame_jButton2_actionAdapter(this));
    jButton3.setFont(new java.awt.Font("Dialog", 0, 12));
    jButton3.setText("断开连接");
    jButton3.addActionListener(new ClientFrame_jButton3_actionAdapter(this));
    jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);    jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);    jScrollPane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);    jScrollPane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);    contentPane.add(jPanel1, BorderLayout.CENTER);
    jPanel1.add(jLabel1,     new XYConstraints(32, 20, 65, 25));
    jPanel1.add(jTextField1,  new XYConstraints(95, 16, 101, 30));
    jPanel1.add(jLabel2,  new XYConstraints(215, 18, 46, 26));
    jPanel1.add(jTextField2,    new XYConstraints(258, 16, 65, 30));
    jPanel1.add(jLabel3, new XYConstraints(342, 15, 48, 29));
    jPanel1.add(jTextField3,  new XYConstraints(397, 16, 76, 30));
    jPanel1.add(jButton1,     new XYConstraints(494, 15, 94, 33));
    jPanel1.add(jRadioButton1, new XYConstraints(32, 55, 61, 26));
    jPanel1.add(jRadioButton2, new XYConstraints(31, 82, 81, 26));
    jPanel1.add(jTextField4,  new XYConstraints(137, 68, 208, 34));
    jPanel1.add(jButton3,   new XYConstraints(493, 66, 94, 35));
    jPanel1.add(jButton2, new XYConstraints(363, 66, 103, 35));
    buttonGroup1.add(jRadioButton1);
    buttonGroup1.add(jRadioButton2);
    jPanel1.add(jScrollPane1,    new XYConstraints(254, 119, 329, 172));
    jScrollPane1.getViewport().add(jTextArea1, null);
    jPanel1.add(jScrollPane2,   new XYConstraints(27, 120, 200, 170));
    jScrollPane2.getViewport().add(jList1, null);
  }

  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void jButton1_actionPerformed(ActionEvent e) {
    try{
      InetAddress ip = InetAddress.getByName(jTextField1.getText().trim());

      int port=Integer.parseInt(jTextField2.getText().trim());
      socket=new Socket(ip,port);
      jTextArea1.append("系统提示:与聊天服务器系统开始连接。。。\n");
    }catch(Exception ex){
      jTextArea1.append("服务器连接出错!");
    }
    if(socket!=null){
      jTextArea1.append("系统提示:系统与服务器连接成功。。。\n");
      clientName=jTextField3.getText().trim();
      try{
        cin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        cout=new PrintStream(socket.getOutputStream());
        String str="PEOPLE:"+clientName;
        cout.println(str);
        ReadMessageThread readThread=new ReadMessageThread();
        readThread.start();
      }catch(IOException ex){
        jTextArea1.append("网络流的输入输出异常");
      }
    }
  }

  void jButton2_actionPerformed(ActionEvent e) {
    String message=jTextField4.getText().trim();
    String str="MSG:";
    if(jRadioButton1.isSelected()){
      str=str+"BOARD:";
    }
    else{
      String name=jList1.getSelectedValue().toString();
      str=str+name+":";
    }
    str+=":"+message;
    cout.println(str);
    }

  void jButton3_actionPerformed(ActionEvent e) {
    String str="QUIT";
    cout.println(str);
    jTextArea1.append("客户请求断开连接\n");
  }

class ReadMessageThread extends Thread{
    public void run(){
      String line="";
      while(true){
        try{
          line=cin.readLine();
        }catch(IOException ex){
          System.out.println("输入输出异常\n");
        }
        StringTokenizer st=new StringTokenizer(line,":");
        String keyword=st.nextToken();
        if(keyword.equalsIgnoreCase("quit")){ //断开网络连接
          try{
            socket.close();
            jTextArea1.append("接收到服务器同意端口信息,套节字关闭\n");
          }catch(Exception ex){
            jTextArea1.append("关闭套接字异常");
          }
        }
        else if(keyword.equalsIgnoreCase("PEOPLE")){
          Vector imessage=new Vector();
          while(st.hasMoreTokens()){
            imessage.addElement(st.nextToken());
          }
          jList1.setListData(imessage);
        }
        else if(keyword.equalsIgnoreCase("MSG")){
          String message=st.nextToken("\0");
          message=message.substring(1);
          jTextArea1.append(message+"\n");
        }
      }
    }
}
}

class ClientFrame_jButton1_actionAdapter implements java.awt.event.ActionListener {
  ClientFrame adaptee;

  ClientFrame_jButton1_actionAdapter(ClientFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}

class ClientFrame_jButton2_actionAdapter implements java.awt.event.ActionListener {
  ClientFrame adaptee;

  ClientFrame_jButton2_actionAdapter(ClientFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton2_actionPerformed(e);
  }
}

class ClientFrame_jButton3_actionAdapter implements java.awt.event.ActionListener {
  ClientFrame adaptee;

  ClientFrame_jButton3_actionAdapter(ClientFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton3_actionPerformed(e);
  }
}

⌨️ 快捷键说明

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