private void FullCheckSum(byte[] byPacket)
        {
            uint sum = RAWDefine.CheckSum(byPacket, byPacket.Length);

            byPacket[2] = (byte)sum;
            byPacket[3] = (byte)(sum >> 8);
        }
Exemple #2
0
        public static uint GetSynPacket(byte[] byBuffer, uint uSIP, uint uDIP, ushort usSPort, ushort usDPort, uint uSeq)
        {
            Array.Copy(m_bySyn, byBuffer, m_bySyn.Length);
            uint useq = RAWDefine.SetSynData(byBuffer, uSIP, uDIP, usSPort, usDPort, uSeq);

            RAWDefine.CheckSum(byBuffer);
            return(useq);
        }
Exemple #3
0
        private static void CheckSum(byte[] bySyn)
        {
            lock (m_byPsd) {
                m_byPsd[0] = bySyn[12];
                m_byPsd[1] = bySyn[13];
                m_byPsd[2] = bySyn[14];
                m_byPsd[3] = bySyn[15];
                m_byPsd[4] = bySyn[16];
                m_byPsd[5] = bySyn[17];
                m_byPsd[6] = bySyn[18];
                m_byPsd[7] = bySyn[19];

                Array.Copy(m_byPsd, m_byTemp, 12);
                Array.Copy(bySyn, 20, m_byTemp, 12, 20);
                ushort usSum = RAWDefine.CheckSum(m_byTemp, m_byTemp.Length);
                bySyn[36] = (byte)(usSum);
                bySyn[37] = (byte)(usSum >> 8);
                usSum     = RAWDefine.CheckSum(bySyn, 20);
                bySyn[10] = (byte)(usSum);
                bySyn[11] = (byte)(usSum >> 8);
            }
        }
        private TaskInfo CreateTaskInfo(IPAddress ipAddr, int nRetry, byte[] byData)
        {
            TaskInfo ti = null;

            lock (m_que_taskInfo) ti = m_que_taskInfo.Dequeue();
            if (byData != null)
            {
                if (byData.Length > 1400)
                {
                    throw new ArgumentException("The [byData.Length] must less than 1400");
                }
                if (byData.Length + ti.HeadPacket.Length > ti.TempPacket.Length)
                {
                    ti.TempPacket = new byte[byData.Length + ti.HeadPacket.Length];
                    Array.Copy(ti.HeadPacket, ti.TempPacket, ti.HeadPacket.Length);
                    Array.Copy(byData, 0, ti.TempPacket, ti.HeadPacket.Length, byData.Length);
                }
                ti.DataLen = ti.HeadPacket.Length + byData.Length;
            }
            else
            {
                ti.DataLen = ti.HeadPacket.Length + 1;
                Array.Copy(ti.HeadPacket, ti.TempPacket, ti.HeadPacket.Length);
                lock (m_rnd) ti.TempPacket[ti.HeadPacket.Length] = (byte)m_rnd.Next('a', 'z');
            }
            ti.TempPacket[2] = 0;
            ti.TempPacket[3] = 0;
            uint sum = RAWDefine.CheckSum(ti.TempPacket, ti.TempPacket.Length);

            ti.TempPacket[2] = (byte)sum;
            ti.TempPacket[3] = (byte)(sum >> 8);
            ti.EndPoint      = new IPEndPoint(ipAddr, 0);
            ti.Retry         = nRetry;
            ti.RunedRetry    = 0;
            return(ti);
        }