嗨,我想知道如何设置UDPClients以启用客户端之间的实时2路通信

我正在用C#开发一个简单的网络游戏,玩家应该可以托管游戏,而其他人可以连接到它

主机将每X毫秒发送一次新的游戏状态,并同时接收来自其他玩家的连续用户输入流

其他玩家将不断等待新的输入状态,还将用户输入发送给主机

我想知道的是如何实现这一目标。

我是否应该使用2个不同的UDPClient,如果它们尝试同时利用相同的资源,是否存在潜在的线程冲突?如果不是,我是否需要以某种特殊的方式设置它们,否则,如果我使用的是1个UDPClient,是否有什么需要特别说明的,或者它是线程安全的,我可以在接收时发出新的消息吗?

最佳答案

UDP是一种双工协议(protocol)(如TCP)。

您可以安全地同时发送和接收UDPClient对象。您不应使用两个UDPClient对象。

但是,这些操作确实发生在单独的线程(或伪线程,如果使用await/async)上,因此您可能会在调用代码中遇到同步问题(显然,很难看到它,但是看不到它,但是有可能出现) 。

10-07 16:03