示例#1
0
        public byte[] BuildUDPPacket(UpdThreadParam param)
        {
            byte[] ipAddr = param.LocalAddr.GetAddressBytes();
            if(ipAddr.Length != 4)
                return null;
            List<byte> bytePacket = new List<byte>();
            bytePacket.Add(0x02);
            bytePacket.Add(ipAddr[0]);
            bytePacket.Add(ipAddr[1]);
            bytePacket.Add(ipAddr[2]);
            bytePacket.Add(ipAddr[3]);
            byte[] port = BitConverter.GetBytes((ushort)param.TcpPort);
            //高字节在前
            bytePacket.Add(port[1]);
            bytePacket.Add(port[0]);

            ushort VerDataLen = 0;
            List<byte> byteVer = new List<byte>();
            for(int i=0; i< param.lstAllUpdateFile.Count; i++)
            {
                byte[] VerData = GetVerData(param.lstAllUpdateFile[i]);
                if(VerData != null)
                {
                    byteVer.AddRange(VerData);
                    VerDataLen += (ushort)VerData.Length;
                }
            }

            byte[] byteVerLen = BitConverter.GetBytes(VerDataLen);
            //高字节在前
            bytePacket.Add(byteVerLen[1]);
            bytePacket.Add(byteVerLen[0]);
            bytePacket.AddRange(byteVer);
            bytePacket.Add(0x03);
            byte xorByte = GetXorValue(bytePacket,1,bytePacket.Count-2);
            bytePacket.Add(xorByte);
            return bytePacket.ToArray();
        }
示例#2
0
 private void StartUdpBroadcast(IPAddress localaddr, int nPort, int nPortInData)
 {
     IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0);
     UdpClient broadcastUdp = new UdpClient(endPoint);
     IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("255.255.255.255"), nPort);
     //后台线程参数
     UpdThreadParam ThreadPar = new UpdThreadParam();
     ThreadPar.Client = broadcastUdp;
     ThreadPar.UdpEP = endpoint;
     ThreadPar.LocalAddr = localaddr;
     ThreadPar.TcpPort = nPortInData;
     ThreadPar.lstAllUpdateFile = lstUpdateFile;
     m_bBackground = true;
     Thread t = new Thread(new ParameterizedThreadStart(BroadcastThread));
     t.IsBackground = true;
     t.Start(ThreadPar);
 }