【发布时间】:2012-07-06 17:49:20
【问题描述】:
我正在尝试为我的程序创建一个聊天客户端,并且我想为每个聊天打开一个新窗口(A 和 B 不会与 A 和 C 在同一个窗口中)我有我的 psudocode正在尝试,但不确定如何编写。
聊天客户端:
inputstream.read()
Read who message from
If (chat window arleady open with person from)
{
Add Message to output section of the window
{
else if (chat window not open)
{
Open new chat window with person from
Display message in new chat window
}
为此,我想到的是将 IP 存储在一个数组中,然后每当客户端收到消息时,它就会查看数组以查看是否存储了 IP。如果是存储的,则窗口应该已经打开,否则需要打开窗口。我可以通过使用 JFrame 中的 defaultonclose 命令对此进行编程,以便在窗口关闭时调用 IP 的删除,但这是我遇到的问题。
- 一旦我在数组中搜索 IP 地址,如果窗口已经打开(假设我有 A B 和 C 与 D 通话),我如何确保 C 发送的消息将其放置在 C 窗口中?
1.1 我考虑过产生一个新线程,命名线程,然后当有消息进入时将其传递到与名称匹配的线程,但我不确定如何做到这一点。我以前读过线程的名称,但从未将某些内容传递给特定的线程。
有没有在不下载额外库的情况下更容易做到这一点?
【问题讨论】:
-
您的客户看起来怎么样?你认为窗户是什么?
-
客户端当前控制库存数据库,但我正在尝试向其添加聊天服务。我让数据库命令和消息命令在同一个套接字上传输,然后根据我称为“类型”的字段生成库存处理程序或聊天处理程序。我认为每个 JFrame 都是一个“窗口”。
-
我仍然不确定我是否理解您的问题。是关于管理哪个对话显示在哪个窗口中吗?
-
我真的有两个问题。 #1 如何检查窗口是否打开,以及 #2 如何将数据放入正确的窗口。如果我打开了聊天服务,并且我在 3 个不同的窗口中与 3 个不同的人交谈,我如何确保当我收到来自第 2 个人的消息时,它进入属于我们 2 人之间对话的窗口.
-
您或许应该拆分您的问题以解决每个问题的一个问题。这是关于您的问题的提示:您的聊天服务可以跟踪您的对话和窗口。例如,您可以使用地图来跟踪发件人和他们的对话。你也可以使用地图来存储哪个窗口是“打开”的。