private void FullCheckSum(byte[] byPacket) { uint sum = RAWDefine.CheckSum(byPacket, byPacket.Length); byPacket[2] = (byte)sum; byPacket[3] = (byte)(sum >> 8); }
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); }
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); }