代码之家  ›  专栏  ›  技术社区  ›  jab

.NET多播套接字错误

  •  0
  • jab  · 技术社区  · 15 年前

    我有一个应用程序使用两个多播频道,所以

    _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 回复  |  直到 15 年前
        1
  •  2
  •   jab    15 年前

    好吧,我明白了:

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

    在第一次绑定之前