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

📄 socketclient.java

📁 Java网络编程
💻 JAVA
字号:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SocketClient extends JFrame 
{
  
      JPanel contentPane;
      JScrollPane scrollPane = new JScrollPane();
      JTextArea textArea = new JTextArea();
      JTextField textField = new JTextField();
      JButton connButton = new JButton();
      JButton sendButton = new JButton();
      JButton quitButton= new JButton();
      Socket socket;
      BufferedReader bufferedReader;
      PrintWriter printWriter;

  public SocketClient() {  
      contentPane = (JPanel) this.getContentPane();
      contentPane.setLayout(null);
      scrollPane.setBounds(new Rectangle(10, 5, 381, 147));
      textArea.setText("");
      textField.setText("");
      textField.setBounds(new Rectangle(12, 162, 375, 32));  
      connButton.setBounds(new Rectangle(7, 205, 84, 25));
      connButton.setText("连接");
      sendButton.setBounds(new Rectangle(113, 206, 96, 24));
      sendButton.setEnabled(false);
      sendButton.setFocusPainted(true);
      sendButton.setText("发送");  
      quitButton.setBounds(new Rectangle(226, 208, 103, 22));
      quitButton.setText("退出");
      contentPane.add(scrollPane, null);
      contentPane.add(textField, null);
      contentPane.add(connButton, null);
      contentPane.add(sendButton, null);
      contentPane.add(quitButton, null);
      scrollPane.getViewport().add(textArea, null);
      
      //内部定义事件
      connButton.addActionListener(new ActionListener()
      {
    	  public void actionPerformed(ActionEvent e){
	      Connect conn=new Connect();
    	  new Thread(conn).start();
          } 
      });
      sendButton.addActionListener(new ActionListener()
      {
    	  public void actionPerformed(ActionEvent e){
    		 printWriter.println(textField.getText());
    		 printWriter.flush();
    		 textArea.append("客户端信息:"+textField.getText()+"\n");
    		 textField.setText("");
	  }
       });   
      quitButton.addActionListener(new ActionListener()
      {
    	  public void actionPerformed(ActionEvent e){
    	  try{
       		 printWriter.println("客户端退出!");
        	 printWriter.flush();
          }
	    catch(Exception e1)
	    {
	    	textArea.append(e1.toString()+"\n");
	    }
	   finally{System.exit(0);}
	 }   
     });
    }

 private class Connect implements Runnable
 {
 	public void run()
 	{
 	try{socket=new Socket("localhost",4331);
        bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        printWriter=new PrintWriter(socket.getOutputStream());
        sendButton.setEnabled(true);
        GetInfo getinfo=new GetInfo();
        Thread t=new Thread(getinfo);
        t.start();
        textArea.append("客户端已加入!\n");
        connButton.setEnabled(false);
       }
       catch(Exception e)
      {textArea.append(e.toString()+"\n"); }
       }	
 }

  //定义类接受消息
  private class GetInfo implements Runnable
  {
	  public void run() 
	  {
		String str;
			
		  try {
			  str = bufferedReader.readLine(); //从bufferedReader读入一行
			  while (str != "客户端退出!") 
				{
				  textArea.append("客户端信息:" + str + "\n");
				  str = bufferedReader.readLine(); //继续读入客户端信息
				}
			 bufferedReader.close(); //关闭缓冲区
          		 printWriter.close();
         		 socket.close(); //关闭socket
			}
		 catch (Exception e)
		  {
			  sendButton.setEnabled(false);
			  textArea.append(e.toString() + "\n");
		  }		
	  }
  }
  public static void main(String[] args){
	SocketClient client=new SocketClient();
	client.setTitle("客户端");
	client.setSize(400,300);
	client.setVisible(true);
	client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
  }

⌨️ 快捷键说明

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