当某个消息从套接字到达时,我希望执行预定义的Java代码(因此引号)。这样做的最佳方式是什么?我想解析消息,然后运行某种案例检查,但我认为可能有一种更简洁的方式来做同样的事情。
答案 0 :(得分:2)
你可以通过很多方式实现这一目标。正如人们所说,你可以使用很多设计模式来实现,比如Builder。
但这是实现客户端的简单方法:
public class DateClient {
public static void main(String[] args) throws IOException {
String serverAddress = "ipAdress";
Socket s = new Socket(serverAddress, 9090); // use the right port
BufferedReader input
= new BufferedReader(new InputStreamReader(s.getInputStream()));
char answer = input.readLine().charAt(0);
switch (answer) {
case 'a':
//do something for a
break;
case 'b':
//do something for b
break;
case 'c':
//do something for c
break;
default:
System.out.println("No valid entry");
}
System.exit(0);
}
}
从服务器读取包时需要验证,否则可能会抛出异常。
答案 1 :(得分:1)
它不是真的"动态"。你的意思是从套接字执行给定请求的命令?
建筑服务规则#1:清理所有输入。
出于这个原因,我会避免任何使用Reflection获取方法名称并以这种方式执行它们的方法。
基本上,您正在寻找一些逻辑来确定如何处理输入请求。
这可以通过多种方式完成。
您决定如何实施这一点取决于您,并且取决于您的目标。
您决定成为"消息"从套接字涉及格式化。我假设您正在格式化数据,以便接收方知道X字节的消息即将到来,因此只有在收到整个消息时才能对其进行缓冲和处理。
套接字上的数据格式超出了本问题的范围。设计和构建RPC服务有很多资源。可能谷歌和你在一起。