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

📄 network.java

📁 Java做的黑白棋
💻 JAVA
字号:
package javacontest;


import java.awt.BorderLayout;

import javax.swing.JFrame;

import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;

/*这个类主要负责网络对战及其交互*/
public class NetWork extends JFrame {

    JRadioButton rButton[] = new JRadioButton[2];
    JTextField State, cHost, SMSField;
    JButton Connect, DisConnect, SendMsg, SendFile;
    JTextArea MessageTextArea;
    ServerSocket sSocket;
    Socket InSocket, cSocket;
    BufferedReader bufReader;
    PrintWriter pWriter;
    String InStr;
    int type = JOptionPane.ERROR_MESSAGE;
    String title = "Error Message";
    String ErrorMsg = "Error";
    Container c = new Container();
    NetWork_Client Client;
    NetWork_Server Server;

    public NetWork() { //
        super("黑白棋网络对战!");
        //Layout

        c.setLayout(null);
        setSize(500, 480);
        getContentPane().add(c);

        MessageTextArea = new JTextArea();
        MessageTextArea.setBounds(100, 130, 200, 200);
        MessageTextArea.setLineWrap(true);

        c.add(MessageTextArea);
        //c.add(new JScrollPane(MessageTextArea));
        //the exit event
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent ClosingWin) {
                System.exit(0);
            }
        });

        //interphase
        String bStr[] = {"Server", "Client"};
        ButtonGroup bGroup = new ButtonGroup();
        for (int i = 0; i < 2; i++) {
            rButton[i] = new JRadioButton(bStr[i]);
            rButton[i].setBounds(10 + i * 80, 30, 80, 20);
            bGroup.add(rButton[i]);
            c.add(rButton[i]);
        }
        rButton[0].setSelected(true);

        JLabel ConnectState = new JLabel("ConnectState :");
        ConnectState.setBounds(200, 30, 100, 20);
        c.add(ConnectState);
        State = new JTextField();
        State.setBounds(320, 30, 150, 20);
        c.add(State);

        JLabel ConnectHost = new JLabel("ConnectHost IP");
        ConnectHost.setBounds(10, 80, 100, 20);
        c.add(ConnectHost);
        cHost = new JTextField();
        cHost.setBounds(100, 80, 200, 20);
        c.add(cHost);
        Connect = new JButton("Connect");
        Connect.setBounds(320, 80, 100, 20);
        c.add(Connect);
        Connect.addActionListener(new ActionListener() { //the event of the connect button
            public void actionPerformed(ActionEvent e) {
                try {
                    if (rButton[0].isSelected() == true) { //start up the Server Thread
                        InStr = "";
                        SMSField.setText("");
                        Server.start();
                    } else { //start up the Client thread
                        InStr = "";
                        SMSField.setText("");
                        Client.start();
                    }
                } catch (Exception Ex) {
                    return;
                } finally {

                    DisConnect.setEnabled(true);
                    SendMsg.setEnabled(true);
                    Connect.setEnabled(false);

                }
            }
        });

        JLabel ReceInfo = new JLabel("Information ");
        ReceInfo.setBounds(10, 130, 100, 20);
        c.add(ReceInfo);

        DisConnect = new JButton("DisConnect");
        DisConnect.setBounds(320, 130, 100, 20);
        c.add(DisConnect);
        DisConnect.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) { //the event of the disconnect button
                //close the server or client
                try {
                    if (rButton[0].isSelected() == true) { //close the server
                        InSocket.close();

                    } else { //close the client
                        cSocket.close();
                    }
                } catch (Exception Ex) {
                    return;
                } finally {
                    State.setText("Closed...");
                    DisConnect.setEnabled(false);
                    SendMsg.setEnabled(false);
                    Connect.setEnabled(true);

                }
            }
        });

        SMSField = new JTextField();
        SMSField.setBounds(100, 350, 200, 20);
        SMSField.setToolTipText("Enter your message here");
        c.add(SMSField);
        // send message
        SendMsg = new JButton("Send");
        SendMsg.setBounds(320, 350, 100, 20);
        SendMsg.addKeyListener(new KeyListener() {
            public void keyPressed(KeyEvent e) {

            }

            public void keyTyped(KeyEvent e) {
                int key = e.getKeyCode();
                if (key == 119) {
                    try {
                        pWriter.write(SMSField.getText());
                        pWriter.write("\n");
                        pWriter.flush();
                        SMSField.setText("");
                    } catch (NullPointerException NpEx) {
                        return;
                    }
                }
            }

            public void keyReleased(KeyEvent e) {

            }
        });

        SendMsg.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    pWriter.write(SMSField.getText());
                    pWriter.write("\n");
                    pWriter.flush();
                    if (rButton[0].isSelected() == true) {
                        MessageTextArea.setText("(Server) :" + SMSField.getText());
                    } else {
                        MessageTextArea.setText("(Client) :" + SMSField.getText());
                    }

                    SMSField.setText("");

                } catch (NullPointerException NpEx) {
                    return;
                }

            }
        });
        c.add(SendMsg);

        //send file
        /*
                 SendFile = new JButton("Send File");
                 SendFile.setBounds(320 , 300 , 100,20);
                 SendFile.addActionListener(new ActionListener()
                 {
         public void actionPerformed(ActionEvent e)
         {
          JFileChooser FileCh = new JFileChooser();
             FileCh.setDialogTitle("Open File");
             FileCh.setApproveButtonText("Open");
             FileCh.showOpenDialog(c);
             File FileName = FileCh.getSelectedFile();
             FileReader FRead = null;
             FileInputStream Input = null;
             try
             {

              Input = new FileInputStream(FileName);
             }


         }
                 });
                 c.add(SendFile);
         */
        JLabel about = new JLabel("STAR 小组制作!");
        about.setBounds(50, 400, 100, 20);
        c.add(about);
        //set up the server and client thread
        Client = new NetWork_Client();
        Server = new NetWork_Server();

    }

    //The Server Thread
    class NetWork_Server extends Thread {
        public NetWork_Server() {
        }

        public void run() {
            try {
                Connect.setEnabled(true);
                State.setText("Waiting for Connect");
                cHost.setText(InetAddress.getLocalHost().getHostAddress());
                sSocket = new ServerSocket(1984);
                InSocket = sSocket.accept();
                bufReader = new BufferedReader(new InputStreamReader(InSocket.
                        getInputStream()));
                pWriter = new PrintWriter(InSocket.getOutputStream(), true);

                while (true) {
                    if (sSocket.isBound() == true) { //makesure is bound
                        State.setText("Connecting");
                        DisConnect.setEnabled(true);
                        Connect.setEnabled(false);
                        SendMsg.setEnabled(true);
                        break;
                    }

                } while (true) {
                    InStr = bufReader.readLine();
                    if (InStr.length() > 0) {
                        MessageTextArea.setText("(Client) :");
                        MessageTextArea.append(InStr);
                        MessageTextArea.append("\n");
                    }

                }
            } catch (Exception Ex) {

                if (sSocket.isBound() == false) {
                    ErrorMsg = "Disconnected";

                    State.setText("Closed...");
                    DisConnect.setEnabled(false);
                    Connect.setEnabled(true);
                    //InSocket.close();
                    JOptionPane.showMessageDialog(c, ErrorMsg, title, type);
                }
                return;
            }
        }
    }


//The Client Thread
    class NetWork_Client extends Thread {
        public NetWork_Client() {

        }

        public void run() {
            try {
                Connect.setEnabled(false);
                State.setText("Waiting for Connect");
                cSocket = new Socket();
                cSocket.connect(new InetSocketAddress(cHost.getText(), 1984),
                                1985);
                bufReader = new BufferedReader(new InputStreamReader(cSocket.
                        getInputStream()));
                pWriter = new PrintWriter(cSocket.getOutputStream(), true);
                while (true) { //makesure is connected
                    if (cSocket.isConnected() == true) {
                        State.setText("Connecting");
                        DisConnect.setEnabled(true);
                        Connect.setEnabled(false);
                        SendMsg.setEnabled(true);
                        break;
                    }
                }
                InStr = "";
                while (true) {
                    InStr = bufReader.readLine();
                    if (InStr.length() > 0) {
                        MessageTextArea.setText("(Server) :");
                        MessageTextArea.append(InStr);
                        MessageTextArea.append("\n");
                    }
                }
            } catch (Exception Ex) {
                ErrorMsg = "Disconnected";
                JOptionPane.showMessageDialog(c, ErrorMsg, title, type);
                return;
            }
        }
    }


//    public static void main(String args[]) {
//        NetWork nw = new NetWork();
//        nw.setVisible(true);
//        nw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        nw.setResizable(false);
//    }
}

⌨️ 快捷键说明

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