gpt4 book ai didi

java套接字服务器客户端->服务器->客户端

转载 作者:行者123 更新时间:2023-12-01 13:46:13 24 4
gpt4 key购买 nike

我已经使用套接字实现了一个简单的客户端/服务器应用程序,但现在我想这样做,我有一个写入服务器的 ClientA,服务器将消息重定向到 ClientB。

客户端A -> 服务器 -> 客户端B

我知道如何实现 ClientA 和 ClientB,但我在服务器内部区分 ClientA 和 ClientB 时遇到问题...

服务器:我知道如何读取和重新发送消息,我只需要区分客户端的逻辑。

最佳答案

如果我理解这个问题,那么您就有一个客户端连接到的服务器。

服务器可以具有两个角色之一:“发送者”或“接收者”。当发送者和接收者连接到服务器时,发送者发送数据,然后将数据传递给接收者。这通常称为“代理”。

实现此目的的一种方法是让服务器监听两个不同的端口,例如 3000 和 4000。连接到端口 3000 的客户端(例如)想要承担发送者的角色,而连接到 4000 的客户端想要接收。如果您有多个发送方和多个接收方,则在设置数据传输连接之前,客户端将需要向服务器表明自己的身份,并表明他们想要向哪个接收方发送或接收数据(例如,通过发送登录参数) 。如何完成此操作(发送数据包)的详细信息称为“协议(protocol)”,您负责设计它。

如果客户端可以同时扮演两个角色(发送者和接收者),那么服务器上将有一个用于所有客户端的监听端口。然后,客户端必须与服务器通信(通过发送数据包)他们想要建立什么连接。同样,发生这种情况的细节完全取决于您。您必须定义协议(protocol)。

下面是执行此操作的一种(多种)方法的序列图:

Client A          Server           Client B
|----login------>| |
| |<------login-----|
| |-------accept--->|
|<---acccept-----| |
|----data------->| |
| |-------data----->|
. . .
. . .
. . .

客户端A登录数据消息显示“我是客户端A,我希望向B发送数据”

客户端 B 登录数据消息显示“我是客户端 B,我希望从 A 接收”

服务器向两者发送“接受”消息。当 A 收到接受消息时,它开始发送数据,服务器将其转发给 B。

要处理的问题包括连接顺序(如果B先于A连接怎么办)、连接失败(服务器如何通知一个客户端另一个客户端消失了)等。这些都是定义协议(protocol)的一部分。

关于java套接字服务器客户端->服务器->客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com