在线程之间共享套接字实例

时间:2013-01-27 10:25:20

标签: c# sockets

我有一个多线程应用程序,其中不同的组件(在不同的线程中运行)需要发送UDP消息。现在他们都共享相同的Socket实例。

套接字创建为Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp),并从线程调用socket.Send(byte[] message)。 Socket.Send是唯一被调用的方法。

这是一种不好的方法吗?我还没有看到任何问题,但我担心这不是套接字的使用方式。

1 个答案:

答案 0 :(得分:3)

最“正确”的解决方案是创建一个调用socket.send方法的方法,并使用锁或互斥锁来保护此调用。这样wikl保证套接字对象在给定时间用于一次线程。您也可以通过使用队列来实现此目的。