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

📄 mainframe.java

📁 利用Java Socket写的一段通讯协议
💻 JAVA
字号:
package com.ict.netcom2.trash;

import java.awt.*;
import javax.swing.*;
import java.awt.BorderLayout;
import javax.swing.BorderFactory;
import java.awt.Color;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import java.awt.event.*;
import java.awt.Dimension;
import javax.swing.border.EtchedBorder;

@SuppressWarnings("serial")
public class MainFrame extends JFrame {
    Server server;
    Client client;

    JPanel jPanel1 = new JPanel();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTextField jTextField1 = new JTextField();
    JButton sendButton = new JButton();
    JTextArea jTextArea1 = new JTextArea();
    Border border1 = BorderFactory.createLineBorder(Color.black, 2);
    Border border2 = new TitledBorder(border1, "Server");
    BorderLayout borderLayout2 = new BorderLayout();
    Border border3 = BorderFactory.createLineBorder(Color.black, 2);
    Border border4 = new TitledBorder(border3, "Client");
    JPanel jPanel2 = new JPanel();
    JScrollPane jScrollPane2 = new JScrollPane();
    JTextArea jTextArea2 = new JTextArea();
    GridLayout gridLayout1 = new GridLayout();
    JPanel jPanel3 = new JPanel();
    BorderLayout borderLayout1 = new BorderLayout();
    GridLayout gridLayout2 = new GridLayout();
    JPanel jPanel4 = new JPanel();
    JPanel jPanel5 = new JPanel();
    BorderLayout borderLayout3 = new BorderLayout();
    JButton connectButton = new JButton();
    JLabel jLabel1 = new JLabel();
    JTextField clientIPField = new JTextField();
    JPanel jPanel6 = new JPanel();
    JPanel jPanel7 = new JPanel();
    BorderLayout borderLayout5 = new BorderLayout();
    JLabel jLabel2 = new JLabel();
    JTextField clientPortField = new JTextField();
    BorderLayout borderLayout4 = new BorderLayout();
    BorderLayout borderLayout6 = new BorderLayout();
    JPanel jPanel8 = new JPanel();
    BorderLayout borderLayout7 = new BorderLayout();
    JPanel jPanel9 = new JPanel();
    JButton serverButton = new JButton();
    JPanel jPanel12 = new JPanel();
    JLabel jLabel3 = new JLabel();
    JTextField serverPortField = new JTextField();
    FlowLayout flowLayout1 = new FlowLayout();

    public MainFrame() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        border4 = new TitledBorder(BorderFactory.createEtchedBorder(
                EtchedBorder.RAISED, Color.white, new Color(148, 145, 140)),
                                   "Client");
        border2 = new TitledBorder(BorderFactory.createEtchedBorder(
                EtchedBorder.RAISED, Color.white, new Color(148, 145, 140)),
                                   "Server");
        getContentPane().setLayout(gridLayout1);
        jPanel1.setBorder(border4);
        jPanel2.setLayout(gridLayout2);
        gridLayout1.setColumns(1);
        gridLayout1.setRows(0);
        jPanel3.setLayout(borderLayout1);
        gridLayout2.setColumns(1);
        gridLayout2.setRows(0);
        jPanel4.setLayout(borderLayout3);
        connectButton.setToolTipText("");
        connectButton.setText("Connect");
        jLabel1.setText("      IP: ");
        clientIPField.setPreferredSize(new Dimension(120, 22));
        clientIPField.setText("127.0.0.1");
        jPanel7.setLayout(borderLayout4);
        jPanel5.setLayout(borderLayout5);
        jLabel2.setText("      Port: ");
        clientPortField.setPreferredSize(new Dimension(60, 22));
        clientPortField.setText("1111");
        jPanel6.setLayout(borderLayout6);
        sendButton.setText("Send");
        sendButton.setEnabled(false);
        jScrollPane1.setBorder(null);
        jPanel1.setLayout(borderLayout2);
        jPanel8.setLayout(borderLayout7);
        serverButton.setText("Start");
        jLabel3.setText("Port:");
        serverPortField.setPreferredSize(new Dimension(64, 22));
        serverPortField.setText("1111");
        jPanel9.setLayout(flowLayout1);
        jPanel8.setBorder(border2);
        jScrollPane2.getViewport().add(jTextArea2);
        jPanel1.add(jScrollPane2, java.awt.BorderLayout.CENTER);
        jPanel1.add(jPanel2, java.awt.BorderLayout.SOUTH);
        this.getContentPane().add(jPanel8);
        jScrollPane1.getViewport().add(jTextArea1);
        this.getContentPane().add(jPanel1, null);
        jPanel3.add(jTextField1, java.awt.BorderLayout.CENTER);
        jPanel3.add(sendButton, java.awt.BorderLayout.EAST);
        jPanel2.add(jPanel3, null);
        jPanel2.add(jPanel4);
        jPanel4.add(jPanel5, java.awt.BorderLayout.CENTER);
        jPanel4.add(connectButton, java.awt.BorderLayout.EAST);
        jPanel5.add(jPanel7, java.awt.BorderLayout.CENTER);
        jPanel5.add(jPanel6, java.awt.BorderLayout.EAST);
        jPanel7.add(jLabel1, java.awt.BorderLayout.WEST);
        jPanel7.add(clientIPField, java.awt.BorderLayout.CENTER);
        jPanel6.add(jLabel2, java.awt.BorderLayout.WEST);
        jPanel6.add(clientPortField, java.awt.BorderLayout.CENTER);
        jPanel8.add(jScrollPane1, java.awt.BorderLayout.CENTER);
        jPanel8.add(jPanel9, java.awt.BorderLayout.SOUTH);
        jPanel12.add(jLabel3);
        jPanel12.add(serverPortField);
        jPanel12.add(serverButton);
        jPanel9.add(jPanel12, null);
        sendButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                send();
            }
        } );
        connectButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                connect();
            }
        });
        serverButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                startServer();
            }
        });

    }

    private String getInput() {
        return jTextField1.getText().trim();
    }
    private void setClientInfo(String str) {
        jTextArea2.append(str+"\n");
        jTextArea2.setCaretPosition(jTextArea2.getDocument().getLength());
    }


    public void setServerInfo(String str) {
        jTextArea1.append(str+"\n");
        jTextArea1.setCaretPosition(jTextArea1.getDocument().getLength());
    }

    public void connect() {
        if (connectButton.getText().equalsIgnoreCase("connect")) {
            String ip = clientIPField.getText().trim();
            int port = Integer.parseInt(clientPortField.getText().trim());
            client = new Client(ip, port);
            sendButton.setEnabled(true);
            connectButton.setText("Disconnect");
        }
        else {
            client.disconnect();
            sendButton.setEnabled(false);
            connectButton.setText("Connect");
        }
    }
    public void send() {
        String str = getInput();
        if (str == null)
            return;
        client.send(str);
        setClientInfo("[SEND] "+str);
        String ack = client.receive();
        setClientInfo("[RCV] "+ack);
    }
    public void startServer() {
        if (serverButton.getText().equalsIgnoreCase("start")) {
            int port = Integer.parseInt(serverPortField.getText().trim());
            server = new Server(port, this);
            server.start();
            serverButton.setText("Stop");
        }
        else {
            server.close();
            serverButton.setText("Start");
        }
    }
}

⌨️ 快捷键说明

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