4

我想用 Java 创建一个简单的 LAN 会议聊天风格的信使,但我不知道从哪里开始
它必须具有以下特点:

  • 没有永久用户名:用户每次加入时都必须能够输入用户名,但应该有一个记住我的选项,以防他经常使用它
  • 一个简单的聊天室界面,右侧显示所有在线用户,中间显示聊天消息
  • 私人聊天服务和阻止选项
  • 想要现成的代码,我希望有人向我解释从哪里开始以及如何去做以及我应该知道的事情(例如输入用户名和内容的文本框)
    想象一下作为一个信使,允许一栋楼里的所有员工互相聊天

    4

    3 回答 3

    7

    尽管您的问题很模糊,但您似乎已经具备了基础知识(套接字和所有这些)。我建议您从阅读 Oracle 网站上的All About SocketsAll About Datagrams Java 课程开始。您可能想要消化的第二课的主要内容是关于广播的部分(用于自动服务器检测)。

    以下是我将如何在高层次上进行实施:

    • 在一个可执行文件中实现一个包含服务器和客户端功能的应用程序。
    • 启动应用程序时,如果未检测到其他服务器(自动或由用户指定),则运行该服务器。
    • 始终运行客户端。这意味着,没有专用服务器将用作客户端之一充当服务器。每个客户端都连接到服务器(包括与服务器在同一台机器上运行的客户端)。

    显然有很多方法可以制作这种应用程序。我并不是说我描述的方式是最好的。但是,它可能适合您描述的用例,并且它的实现相当简单。

    于 2012-06-18T08:18:08.440 回答
    5

    听起来您需要为每个用户提供一个服务器应用程序和一个客户端应用程序。他们将通过套接字进行通信。服务器会打开 a ServerSocket,客户端会创建Sockets 并在他们想要聊天时连接到服务器。

    服务器需要能够接受来自客户端的连接。服务器将保存所有全局细节,例如存在哪些聊天室,每个聊天室都有谁等。基本行为是,当聊天室中有几个人(客户端)时,一个客户端会说些什么,这被发送到服务器通过套接字。服务器拥有聊天室中所有客户端(套接字)的列表,并将消息发送给每个客户端。

    最后,您需要注意服务器必须是多线程的,并且可能需要为每个连接的客户端套接字创建一个新线程。

    于 2012-06-18T08:27:40.827 回答
    2

    由于您不知道是否会有用于该目的的服务器,因此除了先前的响应之外,您可能会感兴趣的下一个链接:

    http://docs.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html

    可以实现阻止选项,保存 IP 列表并忽略来自它们的消息。

    您还必须查看 swing 教程,以便了解如何创建窗口、文本框、文本区域、按钮等,这样您就可以创建自己的界面:

    http://docs.oracle.com/javase/tutorial/uiswing/

    例如,您可以使用属性文件非常轻松地保存用户,但如果您提出此类问题,也许您必须从​​头开始学习 java。

    于 2012-06-18T08:37:53.830 回答