创建一个简单的LAN信使

时间:2012-06-18 08:10:58

标签: java sockets lan instantmessenger

我想用Java创建一个简单的局域网会议聊天风格信使,但我 没有线索从哪里开始
它必须具备以下特点:

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

    3 个答案:

    答案 0 :(得分:6)

    虽然你的问题很模糊,但你似乎已经掌握了基础知识(插座和所有这些)。我建议您先阅读Oracle网站上的All About SocketsAll About Datagrams Java课程,然后开始使用。您可能想要消化的第二课的主要内容是关于广播的部分(用于自动服务器检测)。

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

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

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

    答案 1 :(得分:3)

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

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

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

    答案 2 :(得分:2)

    既然你没有说出是否会出现这种用途的服务器,可能除了之前的回复之外,下一个链接对你来说很有意思:

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

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

    你必须查看swing教程,这样你就可以看到如何创建窗口,文本框,textareas,按钮等,这样你就可以创建你的界面:

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

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