📄 guiserver.java
字号:
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 + -