/// <summary> /// 开启 Socket 并开始接收 /// </summary> /// <param name="localIp">本地 IP</param> /// <param name="localSubnetMask">本地子网掩码</param> public void Open(IPAddress localIp, IPAddress localSubnetMask) { pollPacket = new ArtPollPacket(); LocalIP = localIp; LocalSubnetMask = localSubnetMask; // 设置 socket 类型 第一个参数为适用于所有套接字 第二个参数为允许 Socket 绑定到已在使用中的地址 实现端口复用(一个地址绑定多个 Socket) SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); // 绑定 IP 和端口 Bind(new IPEndPoint(LocalIP, Port)); // 第二个参数为允许在套接字上发送广播消息 SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); // 打开端口 PortOpen = true; // 广播 ArtPoll 数据包 Send(pollPacket); StartRecieve(); }