我正在开发一个项目,它是一个基于C ++的WinSock的服务器 - 客户端应用程序。我已经完成了在服务器和客户端之间进行通信所需的一切,我能够在它们之间发送和接收消息。
现在我需要知道如何完成客户端到客户端的消息传递部分以及如何完成工作。我只知道,例如,如果客户端A和客户端B需要相互通信,客户端A必须将消息发送到服务器,服务器接收消息并将其发送给客户端B.
如果这是正确的方法,请帮助我知道服务器应该如何知道接收器的任何内容(在这种情况下是客户端B)?
如果我没有清楚地解释我的问题,请告诉我。
感谢任何帮助。
答案 0 :(得分:7)
实现此目的的一种方法是让客户端之一在通过实际服务器进行某些通信之后充当服务器。您需要创建自己的协议。话虽如此:
1-客户A:-Hey,Server!。告诉客户B创建一个comm服务器,以便我可以直接与他沟通。
2-服务器:-Hey,客户B!启动服务器实例并告诉我连接属性,以便我可以将其转发给客户端A,以便他可以连接到您。
3-客户B:-Hey,Server!。我已准备好接受客户A的连接请求。这是我的连接属性...
4-服务器:-Client A !!这里是客户B的连接属性。接受或离开它......我已经完成了..
5-客户A:-Hey,服务器B!..我可以连接吗?..
这就是协议..所以任何客户端首先向服务器发起一个请求,其中包含消息类型" me,请求连接到客户端x .."。服务器命令客户端x,客户端x响应,服务器中继响应发起者客户端......还应该实现错误处理,拒绝策略或其他一些你能想到的事情来管理整个协议。
答案 1 :(得分:3)
除非我完全错过了问题的重点。您需要定义一些新消息,其中包含A和B所需的所有详细信息,并将其发送到A和B,他们需要接收/处理消息并做出相应的反应。
答案 2 :(得分:1)
将客户端 - 服务器通信视为旧的无线电通信。
迭代直到通信结束命令
所以想象一下,演讲是write
,而听是read
B: read -> A: write
A: read -> B: write
请记住使用关键字断开2个客户端,否则系统调用可能会有一些不良行为