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

📄 mainframe.java

📁 采用Java语言进行网络编程实现
💻 JAVA
字号:
package multiclient;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.net.*;   //引入网络包,以实现套接字连接import java.io.*;   //引入输入输出流包,以进行数据的读写/** * <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 {  JPanel contentPane;  JLabel jLabel1 = new JLabel();  JTextField jTextField1 = new JTextField();  JLabel jLabel2 = new JLabel();  JTextField jTextField2 = new JTextField();  JButton jButton1 = new JButton();  JButton jButton2 = new JButton();  JTextField jTextField3 = new JTextField();  JScrollPane jScrollPane1 = new JScrollPane();  JTextArea jTextArea1 = new JTextArea();  Socket socket;  BufferedReader cin;  PrintStream cout;  //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, 16));    jLabel1.setText("服务器IP");    jLabel1.setBounds(new Rectangle(21, 17, 68, 32));    contentPane.setLayout(null);    this.setSize(new Dimension(453, 323));    this.setTitle("多客户信息交互系统-客户端");    jTextField1.setFont(new java.awt.Font("Dialog", 0, 16));    jTextField1.setText("127.0.0.1");    jTextField1.setBounds(new Rectangle(92, 17, 105, 32));    jLabel2.setBounds(new Rectangle(206, 17, 42, 32));    jLabel2.setText("端口");    jLabel2.setFont(new java.awt.Font("Dialog", 0, 16));    jTextField2.setBounds(new Rectangle(241, 17, 60, 32));    jTextField2.setText("6544");    jTextField2.setFont(new java.awt.Font("Dialog", 0, 16));    jButton1.setBounds(new Rectangle(320, 17, 114, 32));    jButton1.setFont(new java.awt.Font("Dialog", 0, 16));    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, 16));    jButton2.setBounds(new Rectangle(320, 65, 114, 32));    jTextField3.setBounds(new Rectangle(20, 63, 279, 32));    jTextField3.setText("Hello,everybody");    jTextField3.setFont(new java.awt.Font("Dialog", 0, 16));    jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);    jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);    jScrollPane1.setBounds(new Rectangle(21, 101, 411, 186));    jTextArea1.setText("");    contentPane.add(jLabel1, null);    contentPane.add(jTextField1, null);    contentPane.add(jTextField2, null);    contentPane.add(jLabel2, null);    contentPane.add(jButton1, null);    contentPane.add(jButton2, null);    contentPane.add(jTextField3, null);    contentPane.add(jScrollPane1, null);    jScrollPane1.getViewport().add(jTextArea1, 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);    }  }  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) {  //套接字建立成功              try {                cin=new BufferedReader(new InputStreamReader(socket.getInputStream()));                cout = new PrintStream(socket.getOutputStream());                /*构建发送信息*/                 String str = "来自"+InetAddress.getLocalHost().toString()+"的连接信息";                /*将信息发送到服务器*/                 cout.println(str);                 jTextArea1.append("向服务器发送如下的信息:"+str+"\n");                 ReadMessageThread readThread=new ReadMessageThread();                 /*通过start方法,让线程进入可运行状态*/                 readThread.start();              }catch(IOException e3) {   //捕捉可能产生的异常                jTextArea1.append("输入输出异常\n");              }    }  }  void jButton2_actionPerformed(ActionEvent e) {    String str=jTextField3.getText();    jTextArea1.append("向服务器发送如下的信息:"+str+"\n");    cout.println(str);  }  class ReadMessageThread extends Thread{      /*覆盖Thread类的run方法,在该方法中,循环从端口读入信息,      直到读入“QUIT”,则关闭套接字*/      public void run(){            String str="";            while(true){                try{                    str = cin.readLine();  //读入信息                 }catch (IOException e){                    jTextArea1.append("输入输出异常\n");                 }                if (str.equals("QUIT")){  //若为“QUIT”,则关闭套接字,跳出循环                    try{                          socket.close();                           jTextArea1.append("用户连接已关闭\n");                     }catch (IOException e){                              jTextArea1.append("套接字关闭异常\n");                     }                    break;                    } else          //不是QUIT信息,则将读入的信息进行显示                              jTextArea1.append("从服务器端读入如下的信息:"+str+"\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);  }}

⌨️ 快捷键说明

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