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

📄 socketserver.java

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

public class SocketServer extends JFrame implements Runnable
{
  
      JPanel contentPane;
      JScrollPane scrollPane = new JScrollPane();
      JTextArea textArea = new JTextArea();
      JTextField jTextField1 = new JTextField();
      JLabel label = new JLabel();
      JButton sendButton = new JButton();
      JButton quitButton = new JButton();
     
     static Socket socket;
     static ServerSocket serversocket;
      BufferedReader bufferedReader;         //客户端消息缓冲区
      PrintWriter printWriter;               //服务器消息缓冲区

  public SocketServer() {  
      contentPane = (JPanel) this.getContentPane();
      contentPane.setLayout(null);
      scrollPane.setBounds(new Rectangle(10, 3, 379, 118));
      label.setText("信息为:");
      label.setBounds(new Rectangle(9, 143, 51, 21));
      textArea.setText("");
      jTextField1.setText("");
      jTextField1.setBounds(new Rectangle(65, 139, 320, 34));

      sendButton.setBounds(new Rectangle(7, 205, 84, 25));
      sendButton.setEnabled(false);
      sendButton.setText("发送");
    
      quitButton.setBounds(new Rectangle(226, 208, 103, 22));
      quitButton.setText("退出");
 
      contentPane.add(scrollPane, null);
      contentPane.add(label, null);
      contentPane.add(jTextField1, null);
      contentPane.add(sendButton, null);
      contentPane.add(quitButton, null);
      scrollPane.getViewport().add(textArea, null);

      //内部定义事件
      sendButton.addActionListener(new ActionListener()
      {
	public void actionPerformed(ActionEvent e){
    	printWriter.println(jTextField1.getText());
	    printWriter.flush();
	    textArea.append("服务器端信息:"+jTextField1.getText()+"\n");
	    jTextField1.setText("");
        } 
      });

      quitButton.addActionListener(new ActionListener()
      {
    	  public void actionPerformed(ActionEvent e){
         	try{
			textArea.append("服务器退出!\n");
	        	printWriter.println("exit!");
	       	 	printWriter.flush();
	  	}
        	catch(Exception err)
         	{
               		textArea.append(err.toString()+"\n");
        	}
		finally{System.exit(0);}
	  }
       });  
    }

  //定义类接受消息
  private class GetInfo implements Runnable
  {
	public void run()
     	{
     	 String str;
    	 try{
      		str=bufferedReader.readLine();         //从bufferedreader读入一行
      		while(str!="exit!")
  		{
       			textArea.append("客户端消息:"+str+"\n");
       			str=bufferedReader.readLine(); //继续读入客户端消息
 	    	}
  	 bufferedReader.close();    //关闭缓冲区
   	 printWriter.close();
   	 socket.close();           //关闭socket
  	 serversocket.close();     //关闭serversocket
    	}
	catch(Exception e){textArea.append(e.toString()+"\n");}
      }
  }

 public void run() {
    try
    {
     serversocket=new ServerSocket(4331);
     socket=serversocket.accept();   //接收客户端
     bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));// 建立缓冲区
     printWriter=new PrintWriter(socket.getOutputStream());
     if(socket!=null)
     {
      textArea.append("客户端连接!\n");
      sendButton.setEnabled(true);
     }
     GetInfo getinfo=new GetInfo();
     Thread t=new Thread(getinfo);  //创建接收客户端消息的线程
     t.start();
    }catch(Exception e){textArea.append(e.toString()+"\n");}
  }

  public static void main(String[] args){
	SocketServer server=new SocketServer();
	server.setTitle("服务器");
	server.setSize(400,300);
	server.setVisible(true);
 	new Thread(server).start();
	server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
} 

⌨️ 快捷键说明

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