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

📄 chatserver.java

📁 用SOCKET和SWING进行设计
💻 JAVA
字号:
package chat;

import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.io.*;
import java.net.*;

public class ChatServer extends JFrame {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JLabel jLabel = null;

	private JLabel jLabel1 = null;

	public JTextField jTextField = null;

	public  JTextField jTextField1 = null;

	private JButton jButton = null;

	private JButton jButton1 = null;

	// 服务器端的服务端口。
	public static final int SERVERPORT = 9999;

	public ServerSocket s;

	public Socket incoming;

	public BufferedReader in;

	public PrintWriter out;

	/**
	 * This method initializes jTextField
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(112, 25, 142, 22));
			jTextField.setEditable(false);
		}
		return jTextField;
	}

	/**
	 * This method initializes jTextField1
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTextField1() {
		if (jTextField1 == null) {
			jTextField1 = new JTextField();
			jTextField1.setBounds(new Rectangle(112, 61, 141, 22));
		}
		return jTextField1;
	}

	/**
	 * This method initializes jButton
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(183, 111, 70, 22));
			jButton.setText("发送");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					out.println(jTextField1.getText());
				}
			});
		}
		return jButton;
	}

	/**
	 * This method initializes jButton1
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton();
			jButton1.setBounds(new Rectangle(29, 112, 68, 23));
			jButton1.setText("关闭");
			jButton1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					System.exit(0);
				}
			});
		}
		return jButton1;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				ChatServer thisClass = new ChatServer();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
				ReadThread1 read1=new ReadThread1(thisClass);
				read1.start();
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public ChatServer() {
		super();
		initialize();
		try {
			// 建立服务器端倾听套接字。
			s = new ServerSocket(SERVERPORT);
			System.out.println("Started: " + s);

			// 等待并接收请求,建立连接套接字。
			incoming = s.accept();
			System.out.println("Connection accepted: " + incoming);

			// 新建网络连接的输入流。
			in = new BufferedReader(new InputStreamReader(incoming
					.getInputStream()));
			// 新建网络连接的自动刷新的输出流。
			out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
					incoming.getOutputStream())), true);
		} catch (IOException e) {
		}
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("服务器端");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(25, 59, 67, 18));
			jLabel1.setText("输入信息");
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(25, 24, 66, 18));
			jLabel.setText("显示信息");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(jLabel, null);
			jContentPane.add(jLabel1, null);
			jContentPane.add(getJTextField(), null);
			jContentPane.add(getJTextField1(), null);
			jContentPane.add(getJButton(), null);
			jContentPane.add(getJButton1(), null);
		}
		return jContentPane;
	}

}
class ReadThread1 extends Thread{
	
	ChatServer thisClass;
	public ReadThread1(ChatServer Class)
	{
		super();
		thisClass=Class;
	}
	public void run()
	{
	try {

		while (true) {
			// 从网络连接读取一行,即接收服务器端的数据。
			String str = thisClass.in.readLine();

			// 如果接收到的数据为空(如果直接按Enter,不是空数据),则退出循环,关闭连接。
			if (str == null)
				thisClass.jTextField.setText("");
			if (str.trim().equals("BYE"))
			{
				System.exit(0);
			}
			thisClass.jTextField.setText(str);
		}

	} catch (IOException e) {
		System.err.println("IOException");
	}
	}

}

⌨️ 快捷键说明

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