用C ++创建基本的UDP聊天程序

时间:2012-04-05 19:46:08

标签: c++ udp client-server chat winsock2

我目前在c ++中有一个基本的聊天程序,它使用带有UDP的WinSock2.h。目前,用户能够向服务器发送消息,服务器只返回相同的消息。我想知道从哪里开始(我不是要求代码)。我想知道如何将消息发送到另一个也连接到服务器的客户端。

如果我需要解释我已经做过的事情,请告诉我。

非常感谢所有建议。

由于

3 个答案:

答案 0 :(得分:3)

您将拥有当前已连接用户的列表,当用户发送消息时,它会将其发布给所有已连接的用户。

您的服务器会跟踪谁已连接,并删除断开连接的用户。当有人连接或断开连接时,它会向所有当前连接的用户发送通知,告诉他们此通知。

所有这些并不是特定于UDP,事实上,TCP可能更适合这种类型的消息传递,因为您不必担心消息被丢弃。只应在性能最重要的地方使用UDP,例如实时游戏,语音聊天。

答案 1 :(得分:2)

当你说“连接”时(在客户端的背景下) - 你究竟是什么意思?因为你说你在程序中使用UDP。

在UDP协议中,没有“连接”状态,除非你实现它 然而,在TCP协议中,(在协议本身内实现)。

此外,“广播”消息的基本概念很简单 - 保留已连接客户列表
连接时添加客户端。断开连接后将其从列表中删除 然后,当您想要向所有人发送消息时,您只需遍历此列表。

同样,在跟踪“已连接”的客户端之前,您必须先收到这些dis / connect事件。

如果您使用TCP而不是UDP,那么您已经设置好了。

祝你好运。

答案 2 :(得分:0)

基本上,就像Matthew所说,你需要存储服务器的所有当前连接。当套接字连接时,您可以存储对该套接字的引用。现在,只要客户端发送消息,您就可以将其重新广播到所有套接字。现在你必须处理套接字何时断开连接,因为你不想存储一堆封闭的套接字。