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

📄 socketclient.java~6~

📁 这是我做的JAVA的socket网络通信源码
💻 JAVA~6~
字号:
package client;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SocketClient extends JFrame implements Runnable {
  JPanel contentPane;
  JScrollPane jScrollPane1 = new JScrollPane();
  JTextArea jTextArea1 = new JTextArea();
  JTextField jTextField1 = new JTextField();
  JButton jButton1 = new JButton();
  JButton jButton2 = new JButton();
  JButton jButton3 = new JButton();

  Socket socket;
 BufferedReader bufferedReader;
 PrintWriter printWriter;
 private class GetInfo implements Runnable{
   public void run() {
     String str;
     try {
       str = bufferedReader.readLine(); //從bufferedReader讀入一行
       while (str != "客戶端退出!") {
         jTextArea1.append("客戶端信息:" + str + "\n");
         str = bufferedReader.readLine(); //繼續讀入客戶端信息
       }
       bufferedReader.close(); //關閉緩沖區
       printWriter.close();
       socket.close(); //關閉socket

     }
     catch (Exception e) {
       jButton2.setEnabled(false);
       jTextArea1.append(e.toString() + "\n");
     }
   }
 }


  //Construct the frame
  public SocketClient() {
    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(null);
    this.setSize(new Dimension(400, 300));
    this.setTitle("客戶端");
    jScrollPane1.setBounds(new Rectangle(10, 5, 381, 147));
    jTextArea1.setText("");
    jTextField1.setText("");
    jTextField1.setBounds(new Rectangle(12, 162, 375, 32));
    jTextField1.addKeyListener(new SocketClient_jTextField1_keyAdapter(this));
    jButton1.setBounds(new Rectangle(7, 205, 84, 25));
    jButton1.setText("連接");
    jButton1.addActionListener(new SocketClient_jButton1_actionAdapter(this));
    jButton2.setBounds(new Rectangle(113, 206, 96, 24));
    jButton2.setEnabled(false);
    jButton2.setFocusPainted(true);
    jButton2.setText("發送");
    jButton2.addActionListener(new SocketClient_jButton2_actionAdapter(this));
    jButton3.setBounds(new Rectangle(226, 208, 103, 22));
    jButton3.setText("退出");
    jButton3.addActionListener(new SocketClient_jButton3_actionAdapter(this));
    contentPane.add(jScrollPane1, null);
    contentPane.add(jTextField1, null);
    contentPane.add(jButton1, null);
    contentPane.add(jButton2, null);
    contentPane.add(jButton3, 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);
    }
  }
  public void run() {
    /**@todo Implement this java.lang.Runnable method*/
    //throw new java.lang.UnsupportedOperationException("Method run() not yet implemented.");
    try{
       socket=new Socket("client",1110);
       //將客戶機名為client,如不是清更改
       bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
       printWriter=new PrintWriter(socket.getOutputStream());
       jButton2.setEnabled(true);
       GetInfo getinfo=new GetInfo();
       Thread t=new Thread(getinfo);
       t.start();
       jTextArea1.append("客戶端以加入!\n");
       jButton1.setEnabled(false);
      }catch(Exception e){jTextArea1.append(e.toString()+"\n");}

  }

  void jButton1_actionPerformed(ActionEvent e) {
//開始線程
    Thread t=new Thread(this);
    t.start();
  }

  void jButton2_actionPerformed(ActionEvent e) {
    printWriter.println(jTextField1.getText());
        printWriter.flush();
        jTextArea1.append("客戶端信息:"+jTextField1.getText()+"\n");
        jTextField1.setText("");
  }

  void jButton3_actionPerformed(ActionEvent e) {
    try{
        printWriter.println("客戶端退出!");
        printWriter.flush();
        }catch(Exception err){jTextArea1.append(err.toString()+"\n");}
    finally{System.exit(0);}
  }

  void jTextField1_keyPressed(KeyEvent e) {
    if(e.getKeyChar()==KeyEvent.VK_ENTER)
        {
        printWriter.println(jTextField1.getText());
        printWriter.flush();
        jTextArea1.append("客戶端信息:"+jTextField1.getText()+"\n");
        jTextField1.setText("");
        }
  }
}

class SocketClient_jButton1_actionAdapter implements java.awt.event.ActionListener {
  SocketClient adaptee;

  SocketClient_jButton1_actionAdapter(SocketClient adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}

class SocketClient_jButton2_actionAdapter implements java.awt.event.ActionListener {
  SocketClient adaptee;

  SocketClient_jButton2_actionAdapter(SocketClient adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton2_actionPerformed(e);
  }
}

class SocketClient_jButton3_actionAdapter implements java.awt.event.ActionListener {
  SocketClient adaptee;

  SocketClient_jButton3_actionAdapter(SocketClient adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton3_actionPerformed(e);
  }
}

class SocketClient_jTextField1_keyAdapter extends java.awt.event.KeyAdapter {
  SocketClient adaptee;

  SocketClient_jTextField1_keyAdapter(SocketClient adaptee) {
    this.adaptee = adaptee;
  }
  public void keyPressed(KeyEvent e) {
    adaptee.jTextField1_keyPressed(e);
  }
}

⌨️ 快捷键说明

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