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