📄 echoserver.java
字号:
import java.io.*;
import java.net.*;
// 服务器所提供的显示接收到的文本的服务程序
class EchoService extends AbstractConnection implements Runnable
{
// 服务执行线程
private Thread exec;
// 用指定的Socket创建一个新的EchoService对象
public EchoService(Socket s)
{
super(s);
exec = new Thread(this);
}
// 启动执行线程
public void start()
{
exec.start();
}
// 运行执行线程
public void run()
{
// 打开连接
if(! open())
{
System.out.println("Could not open connection.");
return;
}
Thread t = Thread.currentThread();
while(exec == t)
{
// 等待下一个消息
recv();
// 或缺消息头
String header = parseHeader();
// 如果客户端终止传送则退出
if(header.equals(END_OF_TRANSMISSION))
{
close(false);
return;
}
// 如果消息头是"Reverse",则反转字符串的消息部分
// 并将它发回给客户端
else if(header.equals("Reverse"))
{
send("Echo", new StringBuffer(parseMessage()).reverse().toString());
}
// 否则,响应不可识别
else
{
System.err.println("Unrecognized header: " + parseHeader());
}
try
{
Thread.sleep(25);
}
catch(InterruptedException e)
{ }
}
}
} // EchoService
// TCP连接的一个简单的回显服务器
public class EchoServer extends Server
{
// 用给定的端口号创建一个新的EchoServer
public EchoServer(int portNo)
{
super(portNo);
}
// 通过创建一个新的EchoServer对象
//实现Server的 createService 方法来和客户端通信
protected void createService(Socket socket)
{
new EchoService(socket).start();
}
// 启动服务器,监听一个可选的指定端口
public static void main(String[] args)
{
int port = 0;
if(args.length == 1)
{
try
{
port = Integer.parseInt(args[0]);
}
catch(NumberFormatException e)
{
System.err.println("Invalid port specification; using default port of " + DEFAULT_PORT);
port = DEFAULT_PORT;
}
}
// 启动服务器
Server s = new EchoServer(port);
s.start();
}
} // EchoServer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -