Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个简单的LAN messenger_Java_Sockets_Lan_Instantmessenger - Fatal编程技术网

Java 创建一个简单的LAN messenger

Java 创建一个简单的LAN messenger,java,sockets,lan,instantmessenger,Java,Sockets,Lan,Instantmessenger,我想用Java创建一个简单的局域网会议聊天风格的messenger,但我不知道从哪里开始 它必须具有以下功能: 无永久用户名:用户必须能够在每次加入时键入用户名,但应具有“记住我”选项,以防频繁使用 一个简单的聊天室界面,右侧显示所有在线用户,中心显示聊天信息 私人聊天服务和阻止选项 我不想要现成的代码,我想要有人向我解释从哪里开始,如何开始,以及我应该知道的事情(例如,输入用户名和内容的文本框) 想象一下,它是一个信使,允许同一栋楼里的所有员工互相聊天尽管你的问题很模糊,但你似乎已经具备了基本

我想用Java创建一个简单的局域网会议聊天风格的messenger,但我不知道从哪里开始 它必须具有以下功能:
  • 无永久用户名:用户必须能够在每次加入时键入用户名,但应具有“记住我”选项,以防频繁使用
  • 一个简单的聊天室界面,右侧显示所有在线用户,中心显示聊天信息
  • 私人聊天服务和阻止选项
  • 不想要现成的代码,我想要有人向我解释从哪里开始,如何开始,以及我应该知道的事情(例如,输入用户名和内容的文本框)

    想象一下,它是一个信使,允许同一栋楼里的所有员工互相聊天

    尽管你的问题很模糊,但你似乎已经具备了基本知识(插座等)。我建议您从阅读Oracle网站上的Java和Java课程开始。第二课的主要内容是关于广播的部分(用于自动服务器检测)

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

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

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

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

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


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

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

    通过保存IP列表并忽略来自IP的消息,可以实现block选项

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


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

    您可以从Google开始!下面是一个简单的客户机/服务器示例,端口号如何?导游:)@FasihKhatib端口号由您自己决定。您可以从1024以上的端口进行选择。您应该尽量避免使用普通应用程序使用的端口。我通常使用高端口号,因为这样发生冲突的可能性较小。