套接字错误请求的地址在其上下文中无效

时间:2014-11-04 12:40:52

标签: c# sockets multicast

尝试使用以下方法设置SocketOption时

    listener.SetSocketOption(SocketOptionLevel.IP,
   SocketOptionName.AddMembership, new MulticastOption(ipAddress));

我收到以下异常;

  

请求的地址在其上下文中无效

我的上瘾者是:

  Socket listener = new Socket(AddressFamily.InterNetwork,
      SocketType.Dgram, ProtocolType.Udp);

和Ip是3.212.x.x

这是因为IP的问题吗?

1 个答案:

答案 0 :(得分:2)

问题出在本声明中:

listener.SetSocketOption(SocketOptionLevel.IP,
   SocketOptionName.AddMembership, new MulticastOption(ipAddress));

MSDN将此构造函数概述为:

public MulticastOption(
    IPAddress group
)

所以MulticastOption寻找要广播的组,但我已经通过了localIP,这就是问题所在。

我更改了我的代码:

 IPAddress ip = IPAddress.Parse("224.5.6.7");



Socket _socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
            ProtocolType.Udp);
        _socketServer.SetSocketOption(SocketOptionLevel.IP,


SocketOptionName.AddMembership, new MulticastOption(ip));
            _socketServer.SetSocketOption(SocketOptionLevel.IP, 
  SocketOptionName.MulticastTimeToLive, 1);