servframe.txt

来自「本程序用java语言实现了socket通信服务器端程序」· 文本 代码 · 共 142 行

TXT
142
字号
package sockproj;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import java.net.*;
import java.io.*;
import com.borland.jbcl.layout.*;
public class ServFrame extends JFrame {
  JPane1 contentPane;
  JLabel jLabel1=new JLabel();
  JTextField jTextField1=new JTextField();
  JLabel jLabel2=new JLabel();
  JComboBox jComboBox1=new JComboBox();
  XYLayout xYLayout1=new XYLayout();
  JButton jButton1=new JButton();
  JButton jButton2=new JButton();
  JScrollPane jScrollPane1=new JScrollPane();
  JTextArea jTextArea1=new JTextArea();
  
  ServerSocket SSocket1;
  Socket Socket1;
  InputStream is;
  OutputStream os;
  BufferedReader br;
  PrintWriter pw;
  String client;
  int port1;
  //构建界面
  public servFrame(){
      enableEvents(AWTEvent.WINDOW_EVENT_MASK);
      try{
          jbInit();
      }
      catch(Exception e){
          e.printStackTrace();
      }
  }
  //组建初始化
  private void jbInit() throws Exception{
      contentPane=(JPane1)this.getContentPane();
      jLabel1.setText("消息");
      contentPane.setLayout(xyLayout1);
      this.setSize(new Dimension(400,300));
      this.setTitle("服务器端");
      jTextField1.setText("jTextField1");
      jLabel2.setText("客户端");
      jButton1.setText("连接");
      jButton1.addActionListener(new ServFrame_jButton1_actionAdapter(this));
      jButton2.setText("发送");
      jButton2.addActionListener(new ServFrame_jButton2_actionAdapter(this));
      contentPane.add(jButton1,new XYConstraints(232,1,-1,-1));
      contentPane.add(jButton2,new XYConstraints(232,32,-1,-1));
      contentPane.add(jScrollPane1,new XYConstraints(15,66,372,224));
      contentPane.add(jComboBox1,new XYConstraints(100,3,116,-1));
      contentPane.add(jTextField1,new XYConstraints(100,34,115,-1));
      contentPane.add(jLabel2,new XYConstraints(41,11,-1,-1));
      contentPane.add(jLabel1,new XYConstraints(45,37,-1,-1));
      jScrollPane1.getViewport().add(jTextArea1,null);
      serverStart();System.out.println("ok0");
  }
  //关闭窗口时退出
  protected void processWindowEvent(WindowEvent e){
      super.processWindowEvent(e);
      if(e.getID()==WindowEvent.WINDOW_CLOSING){
          System.exit(0);
      }
  }
  public void serverStart(){
      try{
          SSocket1=new ServerSocket(8080);
      }
      catch(Exception e){
          JOptionPane.showMessageDialog(this,"err:"+toString());
      }
  }
  class receiver implements Runnable{
      public receiver(){}
      public void run(){
          try{
              is=Socket1.getInputStream();
              os=Socket1.getOutputStream();
              br=new BufferedReader(new InputStreamReader(is));
              pw=new PrintWriter(os);
          }
          catch(Exception e1){}
          String str="";
          while(true){
              try{
                  str=br.readLine();
                  if(str!=null){
                      if(!str.equals("e")){//"e"为客户端发过来的信息,表示终止连接
                          jTextArea1.append("from"+Thread.currentThread().getName()+":"+str+"\n");
                      }
                      else{
                          is.close();
                          os.close();
                          br.close();
                          pw.close();
                          jComboBox1.removeItem(client);
                      }
                  }
              }
              catch(Exception e){
              }
          }
      }
  }//receiver
  void jButton1_actionPerformed(ActionEvent e){
      try{
          jButton1.setEnabled(false);
          Socket1=SSocket1.accept();System.out.println("ok1");
          jTextArea1.append("localport:"+SSocket1.getLocalPort()+"\n");
          client=Socket1.getInetAddress().toString();
          jComboBox1.addItem(client);
          jTextArea1.append("client has connected:"+client+"\n");
          port1=Socket1.getPort();
          jTextArea1.append("port:"+port1+"\n");
          Thread t1=new Thread(new receiver(),"client1");
          t1.start();
      }
      catch(Exception e1){
          JOptionPane.showMessageDialog(this,"err:"+e1.toString());
      }
  }
  void jButton2_actionPerformed(ActionEvent e){
      String str="";
      if(Socket1!=null){
          try{
              str=jTextField1.getText()+"\n";
              jTextArea1.append("to client1:"+str);
              pw.write(str);
              pw.flush();
              jTextField1.setText("");
          }
          catch(Exception e1){
              JOptionPane.showInternalMessageDialog(this,"err:"+e1.toString());
          }
      }
    }
  }//ServFrame

⌨️ 快捷键说明

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