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套接字进行服务器间通信_Java_Sockets - Fatal编程技术网

通过Java套接字进行服务器间通信

通过Java套接字进行服务器间通信,java,sockets,Java,Sockets,我有一个聊天客户端服务器应用程序,我们正在扩展它。所以我需要在两个聊天服务器之间进行服务器间通信 问题是:假设有两个服务器A和B。现在假设客户端 C1是与服务器A连接的TCP,客户端c2是与服务器A连接的TCP 服务器B。 然后问题是:作为同一个应用程序,客户机C1和c2应该能够识别彼此是否已登录并在线可用,但 这种情况不会发生,因为没有跨服务器 沟通 可能的解决方案1是:分别登录服务器A和服务器B 其他使用TCP连接。在这里,我可以转发登录XML 消息(字符串)和DataInputStream

我有一个聊天客户端服务器应用程序,我们正在扩展它。所以我需要在两个聊天服务器之间进行服务器间通信

问题是:假设有两个服务器A和B。现在假设客户端 C1是与服务器A连接的TCP,客户端c2是与服务器A连接的TCP 服务器B。 然后问题是:作为同一个应用程序,客户机C1和c2应该能够识别彼此是否已登录并在线可用,但 这种情况不会发生,因为没有跨服务器 沟通

可能的解决方案1是:分别登录服务器A和服务器B 其他使用TCP连接。在这里,我可以转发登录XML 消息(字符串)和DataInputStream通过 TCP连接。因此,每个登录都会传输到另一个服务器 每个服务器和客户机C1都可以访问每个客户机 客户端C2已登录(联机),反之亦然

解决方案1的问题是:假设现在客户机C1可以将客户机C2视为 在线可用,客户端C1向客户端C2发送消息。什么会 服务器A将尝试为客户端写入DatainputStream C2建立在服务器B上,而不是服务器A上。以下是 问题代码将在此中断,服务器A将无法发送 发送给客户机C2的消息

如有任何意见,将不胜感激


谢谢

您可以看看IRC服务器是如何实现这种功能的。我相信您只需要编写另一个服务器,将您的服务器作为客户端处理,并向它们发出请求,以便找到具体的用户


为什么需要扩展到多台机器?我们谈论的是多少用户?您是否已经在使用非阻塞IO,还是每个连接仍使用一个线程?如果可能的话,避免在多台机器上扩展——这是一个痛苦的(有状态的)世界。谢谢你的回复。我的客户希望确保,如果他的产品受到更多的冲击,他应该能够扩展。我们讨论了标杆管理及其新产品,但他无法计算可能的命中率。。因此,我必须实现服务器间通信,正如我上面解释的那样。该产品已经在使用每连接一个线程来实现。我正在考虑非阻塞套接字,它很快就会出现。那么您认为有什么可能的解决方案吗?谢谢re3ply@AlexTheo。你能为你的答案提供一些有用的链接吗?我发现实际上IRC服务器在内部实现了服务器,所以如果你需要按照IRC的方式,你需要在内部为你的服务器实现服务器。否则,只需实现另一个服务器(单独的服务器),我认为这是一个更灵活的解决方案。