我有一个多线程应用程序,其中不同的组件(在不同的线程中运行)需要发送UDP消息。现在他们都共享相同的Socket实例。
套接字创建为Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
,并从线程调用socket.Send(byte[] message)
。 Socket.Send是唯一被调用的方法。
这是一种不好的方法吗?我还没有看到任何问题,但我担心这不是套接字的使用方式。
答案 0 :(得分:3)
最“正确”的解决方案是创建一个调用socket.send方法的方法,并使用锁或互斥锁来保护此调用。这样wikl保证套接字对象在给定时间用于一次线程。您也可以通过使用队列来实现此目的。