异步/同步和TCP或UDP

本文关键字:UDP TCP 同步 异步 | 更新日期: 2023-09-27 18:24:29

我对C#中的同步和异步套接字非常困惑,我想在局域网上开发一个游戏,但我不知道哪一个更适合我的应用程序Hangman游戏。

这个游戏可以玩1人模式或2人模式。

在1人模式中,只有一名玩家与serer 交互

但2人模式2人通过回合制与服务器进行交互。意思是,如果玩家A猜错了单词,他将失去回合,而玩家B将获得此回合。

你能给我关于Synchorous和Asynchronous的建议吗。

除此之外,如果客户端不需要输入服务器ip,客户端如何找到服务器?这意味着我应该在TCP和UDP 之间选择什么

最后一个问题是,我可以创建一个服务器是异步的,但客户端是同步的吗?

非常感谢

异步/同步和TCP或UDP

选择异步与同步的重要部分是如何使通信与GUI线程交互。不要让同步套接字阻塞您的UI。我看到这里的文章给出了一个预期的想法,并给出了一些关于在Windows编程中使用异步的指导。Winsock提示

关于TCP/UDP的第二个问题,您应该注意这两者之间的差异。首先,TCP将在连接有效的情况下保证数据包传递。考虑到您的情况和简单的要求以及缺乏性能需求。TCP可能是您的最佳选择。如果你正在设计一款高性能游戏,你必须允许丢弃数据包并更好地处理延迟,UDP会成为一个更好的选择,但你必须考虑到当你丢弃数据包和出现数据包故障时会发生什么。TCP向您隐藏了所有这些复杂性,并将使使用它变得更简单。

混合使用同步和异步客户端/服务器应该不会造成问题。他们只知道通信链路本身(TCP/UDP)。

关于您的问题:

你能给我关于Synchorous和Asynchronous的建议吗?在你的情况下,考虑到应用程序的复杂性,你可以使用同步或异步套接字,正如twilson所说,同步套接字会阻塞你的主线程,而异步套接字不会,所以如果你有性能问题,就选择异步套接字

除此之外,如果客户端不需要输入服务器ip,客户端如何找到服务器?这意味着我应该在TCP和UDP之间选择什么:TCP和UDP连接之间有很大的区别,当你遇到Voip应用程序、实时游戏、视频聊天等性能问题时,你通常会使用UDP(无连接),而在其他情况下,你会使用TCP,所以在你的情况下,TCP应该很适合你。

最后一个问题是,我可以创建一个服务器是异步的,但客户端是同步的吗?是的,您可以使用这种实现,即使在客户端和服务器上都有相同类型的套接字是一种很好的做法。