From 3a5a9aac44b2cd8892d0942ab8fa8952e3c1010f Mon Sep 17 00:00:00 2001 From: dai_48k <1981669259@qq.com> Date: Wed, 24 Jan 2024 17:15:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=83=E8=B7=B3=E4=BF=9D?= =?UTF-8?q?=E6=B4=BB=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../top/dreamcenter/go/client/MainFrame.java | 9 +++-- .../top/dreamcenter/go/server/UserThread.java | 40 ++++++++++++++++--- 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/client/src/top/dreamcenter/go/client/MainFrame.java b/client/src/top/dreamcenter/go/client/MainFrame.java index 2a428d6..bbd3d13 100644 --- a/client/src/top/dreamcenter/go/client/MainFrame.java +++ b/client/src/top/dreamcenter/go/client/MainFrame.java @@ -25,7 +25,7 @@ public class MainFrame extends JFrame { System.out.println(now); setTitle(now == Cross.BLACK ? "●" : "○"); - setSize(200,230 + BASE_HEIGHT); + setSize(200,220 + BASE_HEIGHT); addMouseListener(new MouseAdapter() { @Override @@ -53,7 +53,7 @@ public class MainFrame extends JFrame { try { String o = (String) Client.recMsg(oi); - if (o.startsWith("INFO:")) { + if (o.startsWith("INFO:") || o.startsWith("WARN:")) { tip = o; } else { map = DataUtil.rawData(o); @@ -72,7 +72,7 @@ public class MainFrame extends JFrame { @Override public void paint(Graphics g) { g.setColor(Color.white); - g.fillRect(0,BASE_HEIGHT,200,230); + g.fillRect(0,BASE_HEIGHT,200,220); g.setColor(Color.lightGray); for (int i = 1; i <= 9; i++) { @@ -90,7 +90,10 @@ public class MainFrame extends JFrame { } } + if(tip.contains("INFO")) g.setColor(Color.GREEN); + if(tip.contains("WARN")) g.setColor(Color.RED); g.drawString(tip, BASE_FROM, 200 + BASE_HEIGHT); + g.setColor(Color.BLACK); } @Override diff --git a/server/src/top/dreamcenter/go/server/UserThread.java b/server/src/top/dreamcenter/go/server/UserThread.java index 50fa68c..4ec9657 100644 --- a/server/src/top/dreamcenter/go/server/UserThread.java +++ b/server/src/top/dreamcenter/go/server/UserThread.java @@ -88,7 +88,7 @@ public class UserThread extends Thread{ } if (!allAlive || users.size() != 2) { - sendMsg("INFO:对方未在线"); + sendMsg("WARN:对方未在线"); } else { boolean result = CalDataUtil.draw(newClick, map); if (result) { @@ -108,13 +108,45 @@ public class UserThread extends Thread{ System.out.println("::" + e.getMessage()); System.out.println("连接断开"); isAlive = false; - break; } } }); thread.start(); + Thread heartBead = new Thread(() -> { + while (true){ + if (users.size() == 2){ + UserThread u1 = users.get(0); + UserThread u2 = users.get(1); + + if (!u1.isAlive && !u2.isAlive) break; + if (!u1.isAlive) { + try { + u2.sendMsg("WARN: 对方已下线"); + } catch (IOException e) { + break; + } + } + if (!u2.isAlive) { + try { + u1.sendMsg("WARN: 对方已下线"); + } catch (IOException e) { + break; + } + } + } + + try { + TimeUnit.SECONDS.sleep(10); + } catch (InterruptedException e) { + break; + } + } + + }); + heartBead.start(); + // 线程等待 try { thread.join(); @@ -124,10 +156,6 @@ public class UserThread extends Thread{ } - public Socket getSocket() { - return socket; - } - public void sendMsg(Object obj) throws IOException { os.writeObject(obj); }