📄 guiserver.java
字号:
package magic.net;
import java.io.*;
import java.awt.*;
import java.applet.*;
import java.net.*;
// 一个简单的启动TCP连接的图形化服务器
public abstract class GUIServer
extends Applet
implements Runnable
{
// 服务器连接的默认端口
public static final int DEFAULT_PORT = 1234;
// 服务端口
protected int port;
// 监听服务请求的ServerSocket
protected ServerSocket listener;
// 服务器的执行线程
protected Thread exec;
// 用来打印服务器消息的 TextArea
protected TextArea textArea;
public void log(String msg)
{
if (textArea != null) {
textArea.append("Server: " + msg + "\n");
}
}
// 创建监听连接的ServerSocket
public void init()
{
textArea = new TextArea();
textArea.setEditable(false);
add(textArea);
port = Integer.parseInt(getParameter("Port"));
if (port == 0) {
port = DEFAULT_PORT;
}
try {
listener = new ServerSocket(port);
}
catch (IOException e) {
log("I/O exception creating server socket : " + e);
}
log("listening on port " + port);
}
public void start()
{
exec = new Thread(this);
exec.start();
}
public void stop()
{
exec = null;
}
protected abstract void createService(Socket s);
public void run()
{
try {
Thread thread = Thread.currentThread();
while (exec == thread) {
Socket clientSocket = listener.accept();
log("connected to " + clientSocket.getInetAddress() +
" : " + clientSocket.getPort());
createService(clientSocket);
try {
Thread.sleep(25);
}
catch (InterruptedException e) {}
}
}
catch (IOException e) {
log("I/O exception raised while listening for connections : " + e);
}
}
} // GUIServer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -