嗨,我想知道如何设置UDPClients以启用客户端之间的实时2路通信
我正在用C#开发一个简单的网络游戏,玩家应该可以托管游戏,而其他人可以连接到它
主机将每X毫秒发送一次新的游戏状态,并同时接收来自其他玩家的连续用户输入流
其他玩家将不断等待新的输入状态,还将用户输入发送给主机
我想知道的是如何实现这一目标。
我是否应该使用2个不同的UDPClient,如果它们尝试同时利用相同的资源,是否存在潜在的线程冲突?如果不是,我是否需要以某种特殊的方式设置它们,否则,如果我使用的是1个UDPClient,是否有什么需要特别说明的,或者它是线程安全的,我可以在接收时发出新的消息吗?
最佳答案
UDP是一种双工协议(protocol)(如TCP)。
您可以安全地同时发送和接收UDPClient
对象。您不应使用两个UDPClient
对象。
但是,这些操作确实发生在单独的线程(或伪线程,如果使用await/async)上,因此您可能会在调用代码中遇到同步问题(显然,很难看到它,但是看不到它,但是有可能出现) 。