如何在此Java代码之上添加心跳消息(用于KnockKnockClient/Server)?
我正在研究以下基本的Java套接字代码(源代码)。这是一个Knock-Knock-Joke客户端/服务器应用程序。
在客户端中,我们像往常一样设置套接字:
try {
kkSocket = new Socket("localhost", 4444);
out = new PrintWriter(kkSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
} catch( UnknownHostException uhe ){ /*...more error catching */
然后,我们只是读取和写入服务器:
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
while ((fromServer = in.readLine()) != null) {
System.out.println("Server: " + fromServer);
if (fromServer.equals("bye."))
break;
fromUser = stdIn.readLine();
if (fromUser != null){
System.out.println("Client: " + fromUser);
out.println(fromUser);
}
而在服务器上,我们有相应的代码,拿到笑话的打卡线。
KnockKnockProtocol kkp = new KnockKnockProtocol();
outputLine = kkp.processInput(null);
out.println(outputLine);
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.processInput(inputLine);
out.println(outputLine);
if (outputLine.equals("Bye."))
break;
我想将心跳附加到整个事物上,每当检测到另一方死亡时,它将打印到控制台上。因为如果我杀死另一方,现在会发生什么是一个例外 - 就像下面这个:
因此,如果我同时运行KnockKnockClient和KnockKnockServer,那么我关闭了KnockKnockServer,应该发生的事情是,在客户端上我看到这个输出:
>The system has detected that KnockKnockServer was aborted
我正在寻找任何提示。到目前为止,我主要尝试运行一个守护进程线程,该线程会定期创建到另一端的新连接。但是我对检查什么条件感到困惑(但我认为这只是一个值?这是正确的方法吗?我刚刚在网上发现有一个名为JGroups的用于多播网络的库 - 这会是一个更好的方法吗?我正在寻找任何提示。boolean
到目前为止,我的服务器代码(抱歉它很乱)
&
谢谢