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

📄 mainframe.java

📁 采用Java语言进行网络编程实现
💻 JAVA
字号:
package multiclientnew;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.net.*;import java.io.*;import java.util.Vector;  //引入Vector类,用于存储客户信息import java.util.StringTokenizer;  //引入StringTokenizer类,用于信息分离/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class MainFrame extends JFrame {  Socket socket=null;  BufferedReader cin=null;  PrintStream cout=null;  String clientName="";  //用于存储客户登陆名称  JPanel contentPane;  JLabel jLabel1 = new JLabel();  JLabel jLabel2 = new JLabel();  JLabel jLabel3 = new JLabel();  JTextField jTextField1 = new JTextField();  JTextField jTextField2 = new JTextField();  JTextField jTextField3 = new JTextField();  JTextField jTextField4 = new JTextField();  JLabel jLabel4 = new JLabel();  JButton jButton1 = new JButton();  JButton jButton2 = new JButton();  JButton jButton3 = new JButton();  JScrollPane jScrollPane1 = new JScrollPane();  JList jList1 = new JList();  JScrollPane jScrollPane2 = new JScrollPane();  JTextArea jTextArea1 = new JTextArea();  //Construct the frame  public MainFrame() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  //Component initialization  private void jbInit() throws Exception  {    contentPane = (JPanel) this.getContentPane();    jLabel1.setFont(new java.awt.Font("Dialog", 0, 14));    jLabel1.setText("服务器IP");    jLabel1.setBounds(new Rectangle(16, 20, 60, 23));    contentPane.setLayout(null);    this.setSize(new Dimension(618, 317));    this.setTitle("多用户信息广播系统-客户端");    jLabel2.setBounds(new Rectangle(204, 20, 36, 23));    jLabel2.setText("端口");    jLabel2.setFont(new java.awt.Font("Dialog", 0, 14));    jLabel3.setBounds(new Rectangle(315, 20, 60, 23));    jLabel3.setText("客户名称");    jLabel3.setFont(new java.awt.Font("Dialog", 0, 14));    jTextField1.setFont(new java.awt.Font("Dialog", 0, 14));    jTextField1.setText("127.0.0.1");    jTextField1.setBounds(new Rectangle(77, 20, 120, 23));    jTextField2.setBounds(new Rectangle(240, 20, 63, 23));    jTextField2.setText("6544");    jTextField2.setFont(new java.awt.Font("Dialog", 0, 14));    jTextField3.setBounds(new Rectangle(382, 20, 104, 23));    jTextField3.setFont(new java.awt.Font("Dialog", 0, 14));    jTextField3.setText("");    jTextField4.setText("hello");    jTextField4.setFont(new java.awt.Font("Dialog", 0, 14));    jTextField4.setToolTipText("");    jTextField4.setBounds(new Rectangle(76, 61, 292, 23));    jLabel4.setBounds(new Rectangle(10, 61, 60, 23));    jLabel4.setText("聊天信息");    jLabel4.setFont(new java.awt.Font("Dialog", 0, 14));    jButton1.setBounds(new Rectangle(500, 20, 104, 28));    jButton1.setFont(new java.awt.Font("Dialog", 0, 14));    jButton1.setText("连接服务器");    jButton1.addActionListener(new MainFrame_jButton1_actionAdapter(this));    jButton2.setText("发送信息");    jButton2.addActionListener(new MainFrame_jButton2_actionAdapter(this));    jButton2.setFont(new java.awt.Font("Dialog", 0, 14));    jButton2.setBounds(new Rectangle(380, 61, 104, 28));    jButton3.setBounds(new Rectangle(501, 61, 104, 28));    jButton3.setFont(new java.awt.Font("Dialog", 0, 14));    jButton3.setText("断开连接");    jButton3.addActionListener(new MainFrame_jButton3_actionAdapter(this));    jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);    jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);    jScrollPane1.setBounds(new Rectangle(11, 101, 274, 188));    jScrollPane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);    jScrollPane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);    jScrollPane2.setBounds(new Rectangle(312, 104, 291, 186));    contentPane.add(jTextField3, null);    contentPane.add(jLabel3, null);    contentPane.add(jTextField2, null);    contentPane.add(jLabel2, null);    contentPane.add(jTextField1, null);    contentPane.add(jLabel1, null);    contentPane.add(jButton1, null);    contentPane.add(jButton2, null);    contentPane.add(jButton3, null);    contentPane.add(jLabel4, null);    contentPane.add(jTextField4, null);    contentPane.add(jScrollPane1, null);    contentPane.add(jScrollPane2, null);    jScrollPane2.getViewport().add(jTextArea1, null);    jScrollPane1.getViewport().add(jList1, null);  }  //Overridden so we can exit when window is closed  protected void processWindowEvent(WindowEvent e) {    super.processWindowEvent(e);    if (e.getID() == WindowEvent.WINDOW_CLOSING) {      System.exit(0);    }  }  class ReadMessageThread extends Thread{        public void run(){                String line="";                while(true){                        try{                                line = cin.readLine();  //从端口读入一条信息                        }catch (IOException e){                               jTextArea1.append("输入输出异常\n");                        }                       StringTokenizer st=new StringTokenizer(line,":");                       String keyword=st.nextToken();//存储关键字,判断消息类型                if (keyword.equalsIgnoreCase("QUIT")){ //服务器同意断开信息                                try{                                        socket.close();                                        jTextArea1.append("接收到服务器同意断开信息,套接字关闭\n");                                }catch (IOException e){                                       jTextArea1.append("套接字关闭异常\n");                                }                                this.stop();                        } else if (keyword.equalsIgnoreCase("PEOPLE")){   //客户列表信息                                /*将客户名称分离到Vector中,然后将其显示在下拉列表中*/                                Vector imessage=new Vector();                                while(st.hasMoreTokens())                                        imessage.addElement(st.nextToken());                                jList1.setListData(imessage);                        }else{  //接收的是来自服务器的广播信息                                //将信息的余下内容全部提取,并去掉首字符(冒号),并显示                                String message=st.nextToken("\0");                                message=message.substring(1);                                jTextArea1.append(message+"\n");                        }                }        }}  void jButton1_actionPerformed(ActionEvent e) {    try {                //获取服务器IP                InetAddress ip=InetAddress.getByName(jTextField1.getText());int port=Integer.parseInt(jTextField2.getText());  //获取服务器端口              socket= new Socket(ip,port);  //与服务器连接              jTextArea1.append("系统提示:与服务器开始连接...... \n");    } catch (IOException e1) {   //捕捉可能产生的异常              jTextArea1.append("服务器端口打开出错\n");    }    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 e3) {   //捕捉可能产生的异常                jTextArea1.append("输入输出异常\n");              }        }  }  void jButton2_actionPerformed(ActionEvent e) {    String str=jTextField4.getText();    str="MSG:"+clientName+":"+str;    cout.println(str);  }  void jButton3_actionPerformed(ActionEvent e) {    String str="QUIT";    cout.println(str);    jTextArea1.append("客户请求断开连接\n");  }}class MainFrame_jButton1_actionAdapter implements java.awt.event.ActionListener {  MainFrame adaptee;  MainFrame_jButton1_actionAdapter(MainFrame adaptee) {    this.adaptee = adaptee;  }  public void actionPerformed(ActionEvent e) {    adaptee.jButton1_actionPerformed(e);  }}class MainFrame_jButton2_actionAdapter implements java.awt.event.ActionListener {  MainFrame adaptee;  MainFrame_jButton2_actionAdapter(MainFrame adaptee) {    this.adaptee = adaptee;  }  public void actionPerformed(ActionEvent e) {    adaptee.jButton2_actionPerformed(e);  }}class MainFrame_jButton3_actionAdapter implements java.awt.event.ActionListener {  MainFrame adaptee;  MainFrame_jButton3_actionAdapter(MainFrame adaptee) {    this.adaptee = adaptee;  }  public void actionPerformed(ActionEvent e) {    adaptee.jButton3_actionPerformed(e);  }}

⌨️ 快捷键说明

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