.NET多播套接字错误

时间:2010-01-20 10:20:31

标签: .net sockets multicast

我有一个使用2个多播频道的应用,所以

_sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint iep = new IPEndPoint(IPAddress.Any, 30002);
_sock.Bind(iep);
_sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.255.0.2")));
...

稍后,在同一个应用中

_sock2 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint iep = new IPEndPoint(IPAddress.Any, 30001);
_sock2.Bind(iep);
_sock2.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.255.0.2")));

(注意不同的端口)。

当执行点到达第二个绑定时,引发异常(HResult 0x80004005),警告我只能使用一个协议/地址/端口......

我在C ++应用程序中已经这样做了,所以我认为一定是个错误。

这有什么问题?

提前谢谢

1 个答案:

答案 0 :(得分:2)

好的,我知道了:

_sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1); 

在第一次绑定之前