/// <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();
        }