我对 C# 中的同步和异步套接字非常困惑,我想在 LAN 网络上开发一款游戏,但我不知道哪一个更适合我的应用程序 Hangman 游戏。
此游戏可以以 1 人模式或 2 人模式进行。
在单人模式下,只有一名玩家与服务器交互
但是 2 名玩家模式 2 名玩家轮流与服务器交互。这意味着如果玩家 A 猜错了单词,他就会失去本轮,而玩家 B 会轮到他。
您能给我关于同步和异步的建议吗?
除此之外,如果客户端不需要输入服务器IP,客户端如何找到服务器?这意味着我应该在 TCP 和 UDP 之间选择什么
最后一个问题是我可以创建一个异步服务器但客户端是同步的,可以吗?
非常感谢
最佳答案
选择异步与同步的重要部分是如何使通信与 GUI 线程交互。不要让同步套接字阻塞您的 UI。我看到这里的文章给出了预期的结果,并提供了有关在 Windows 编程中使用异步的一些指导。 Winsock tips
关于 TCP/UDP 的第二个问题,您应该意识到两者之间有很多区别。首先也是最重要的,TCP 将在连接有效时保证数据包的传送。鉴于您的情况和简单的要求并缺乏性能需求。 TCP 可能是您的最佳选择。如果您正在设计一款高性能游戏,必须允许丢包并更好地处理延迟,那么 UDP 会成为更好的选择,但您必须考虑丢包和乱序数据包等情况时会发生什么情况。 TCP 向您隐藏了所有这些复杂性,并使使用它变得更加简单。
混契约(Contract)步和异步客户端/服务器应该不会导致问题。他们只知道通信链路本身(TCP/UDP)。
关于c# - 异步/同步和 TCP 或 UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9248897/