目录
UDP 连接拓展(业务逻辑)
词典服务器实现
完
UDP 连接拓展(业务逻辑)
我们上一篇文章实现了一个回显服务器,在服务端中业务方法 process 中,只是单纯的将客户端输入的东西 return 了一下,我们可以在这里带一点业务逻辑~~
可以改进为一个 “词典服务器”,实现英译汉的效果(请求是一个英文单词,响应返回对应的中文翻译)
词典服务器实现
因为词典服务器和回显服务器的大致逻辑都是相同的,只是在业务处理 process 方法的时候,回显服务器只是简单返回,我们要做的词典服务器只需要在 process 进行对应的业务处理即可,所以没必要再重复实现之前的逻辑~直接继承回显服务器即可~同时继承对应的构造方法。
因为我们要实现的是一个词典,英译汉的效果,所以可以创建 HashMap 类型的对象来进行一一对应。
在构造方法中,就不仅仅继承端口号了,我们就可以把我们要实现的英译汉的单词放在这个构造方法中~
在此处还可以无限的添加英汉键值对。(像有道词典那种专业的词典程序,本质上,就是里面包含了一个这样的非常大的,几十万个键值对的 hashMap)
因为 start 方法,我们的词典服务器的逻辑和回显服务器的逻辑相同,不需要进行更改,可以完全从父类进行继承。
process 方法中,就要实现我们自己的逻辑了,所以需要重写。
在 main 方法中启动即可~
下面是这个实现英译汉服务器的代码:
package network;
import java.io.IOException;
import java.net.SocketException;
import java.util.HashMap;
public class UdpDictServer extends UdpEchoServer{
private HashMap<String, String> hashMap = new HashMap<>();
public UdpDictServer(int port) throws SocketException {
super(port);
hashMap.put("cat","小猫");
hashMap.put("dog","小狗");
}
// start 方法可以完全从父类进行继承
// process 方法中要实现我们的翻译逻辑,所以要进行重写
@Override
public String process(String request) {
// 参数是一个英文单词
// 返回值是一个对应的汉语
return hashMap.getOrDefault(request, "查询的单词不存在~");
}
public static void main(String[] args) throws IOException {
UdpDictServer udpDictServer = new UdpDictServer(9090);
udpDictServer.start();
}
}
运行效果:
服务器: