.net - UdpClient同时接收和发送

标签 .net multithreading udpclient

我正在维护其他人的代码及其使用类UdpClient。该代码声明一个 UdpClient 实例,并使用 UdpClient.Receive() 连续接收数据。

收到数据后,会在另一个线程中对其进行处理,并且 UdpClient 再次调用 Receive()。在处理数据的同时,同一个客户端正在发送回响应。

问题:这是一个错误吗?我认为是这样,因为 UdpClient 不是线程安全的,所以你不能同时调用两个方法。无论如何,代码工作正常,但是......

最佳答案

事实上,某些东西不是线程安全的,并不意味着您不能通过不同的线程调用两个方法(甚至不能通过不同的线程调用一个方法),它只是意味着在设计该类时,它不是设计时考虑了线程安全,因此从您的 POV 来看,并发访问的结果是“不可预测的”。

这不是一个错误。这是一种误用。

关于.net - UdpClient同时接收和发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689919/

相关文章:

c# - 使用JSON.NET解析格式为Date(epochTime-offset)的json日期

.net - PowerShell表单关闭输出 “Cancel”

java - Spring、MVC、Java,让单例 bean 每 5 秒执行一次操作?

c# - UDP - 我可以发送两个数据报部分,并让接收端将它们合并为一个吗?

c# - 可以从 "unsafe"上下文运行具有 "safe"方法的程序集吗?

c# - UI自动化和菜单项

单线程环境中单个事件源的 Java Swing 多个事件监听器

java - Spring 批处理 : How to manage a multi-thread jobs connection to one DataSource (Problem with the reader datasource connection)

python - 如何在Python中正确调用socket模块

c# - C#中使用UdpClient类如何接收UDP包