📄 chatserver.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 + -