【问题标题】:C++ SFML UDP Socket receiving and sending data to multiple clientsC++ SFML UDP Socket 接收和发送数据到多个客户端
【发布时间】:2017-02-02 20:56:33
【问题描述】:

我正在尝试学习网络套接字编程基础知识,但有些东西我听不懂。我的任务是创建工作 MMORPG 服务器-客户端应用程序,其中甚至可以使用 SFML 库同时将多达 1000 个客户端连接到服务器。我从一些简单的东西开始,比如测试数据包、套接字和制作简单的应用程序,比如控制台中的聊天和用于其他任务的多人井字游戏。我听说使用 UDP 套接字是游戏等实时应用程序的一种方式,所以我试图了解它是如何工作的。在 TCP Socket 中,我只是在监听连接,一旦客户端连接,我可以将他分配到某个套接字并在我发送数据并识别他的同时继续监听连接。

我不知道如何识别使用 UDP 套接字的客户端。我什至不确定我的方法是否正确。

我认为它应该像这样工作:

1.我创建 UDP 套接字将其绑定到某个端口。

2.我正在确保客户端获得从服务器接收数据的权限。

3.在循环中,我从每个客户端接收和发送数据包。

4.如果客户端断开连接,我们为他关闭连接/从客户端向量中删除他。

那么我该如何使用 UDP 套接字呢?它们对于这种架构是必要的吗?另外,我将不胜感激任何有关使工作的客户端-服务器应用程序具有良好保护和性能的好文章。在此先感谢:)

【问题讨论】:

  • Google 一个名为“可靠 udp”的协议。因为 UDP 是为了在必要时丢弃数据包而构建的。而且您不希望这种情况发生在游戏中。迟到和迟到可能是可以忍受的,但丢失是一个很大的禁忌。

标签: c++ sockets udp client-server sfml


【解决方案1】:

好吧,我发现了两篇关于在游戏中使用 UDP 套接字和整体网络的好文章:

SFML 游戏开发示例:https://www.packtpub.com/game-development/sfml-game-development-example

作者正在用 C++ 编写 3 款 SFML 游戏,并解释了所有内容,使用 UDP 套接字并注意数据包的可靠性。

游戏文章中的灯光师:http://gafferongames.com/networking-for-game-programmers/

关于游戏网络的大量信息。

我希望它对寻找有关 UDP 套接字的线索以及在网络游戏开发中使用它的示例的人有所帮助。

【讨论】:

    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2013-01-17
    相关资源
    最近更新 更多