2010-01-20 55 views
0

我有一個使用2個多播信道的應用程序,所以.NET組播套接字錯誤

_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"))); 

(注意不同的端口)。

當執行點到達第二綁定異常(0X80004005的HResult)升高時,警告我只有一個協議/地址/端口可用於...

我已經做到了在C++應用,因此我認爲它一定是一個錯誤。

那有什麼問題?

預先感謝您

回答

2

好吧,我知道了:第一綁定之前

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