Home > database >  The client
The client

Time:09-29

Using System;
using System.Collections.Generic;
using System.Text;

The namespace ConsoleApplication1
{
The class HMessage
{

Public int m_iCount;
Public int m_iPos;//the current read or write position
Public byte [] m_byBufferData=https://bbs.csdn.net/topics/new byte [1000];
Void memset (byte [] byBufferData, byte byValue, int iLen)
{
for (int i=0; I & lt; ILen; I++)
{
ByBufferData [I]=byValue;
}
}
Public static void memcpy (byte [] byBufferData, byte [] pBuffer, int iLen)
{
for (int i=0; I & lt; ILen; I++)
{
ByBufferData [I]=pBuffer [I];
}
}
Public static void memcpy (byte [] byBufferData, byte [] pBuffer, int iLen, int iPosDest)
{
for (int i=0; I & lt; ILen; I++)
{
+ iPosDest byBufferData [I]=pBuffer [I];
}
}
Public static void memcpy (byte [] byBufferData, byte [] pBuffer, int iLen, int iPosDest, int iPosSource)
{
for (int i=0; I & lt; ILen; I++)
{
+ iPosDest byBufferData [I]=pBuffer + iPosSource [I];
}
}
//BYTE unsigned char
//WORD unsigned short
//DWORD unsigned int
//QWORD unsigned long long (unsigned long)
Public HMessage ()
{
M_iCount=0;
M_iPos=0;
Memset (m_byBufferData, 0, 1000);
}
Public static int GetMsgLen (byte [] pBuffer, int iPos)
{
Byte [] byBufferData=https://bbs.csdn.net/topics/pBuffer;
UInt16 wRet=0;

WRet=(UInt16) (byBufferData + iPos [0] <8);
WRet=(UInt16) (wRet | (UInt16) (byBufferData + iPos [1] <0));

Return (int) wRet;
}

Public void Init (byte [] pBuffer, int iLen)
{
M_iPos=0;
M_iCount=iLen;
Memcpy (m_byBufferData, pBuffer, iLen);
}

Public void PutString (string strData)//serialization
{
Byte [] byData=https://bbs.csdn.net/topics/Encoding.UTF8.GetBytes (strData);
UInt16 iLen=(UInt16) byData. Length;
PutUShort (iLen);


Memcpy (m_byBufferData byData, iLen m_iPos);
AddSize (iLen);
}

Public byte [] GetData ()
{

SetLen ((UInt16) enclosing m_iCount);
Byte [] byBuffer=new byte [this m_iCount];
Memcpy (byBuffer m_byBufferData, enclosing m_iCount);
Return (byte []) byBuffer;
}


Public void PutChar (byte cData)//serialization
{
M_byBufferData [m_iPos]=cData;
AddSize (1);
}

//0123456789

//pos=8 cont 15
//[10]

//pos=12 cont 15
Bool GetByteArrary (byte [] szBuffer, UInt16 wLen)
{
If (CheckGet (wLen)==false)
return false;
Memcpy (szBuffer, m_byBufferData, wLen, 0, m_iPos);
AddSize (wLen);
return true;
}

Public bool get string (ref string strData)//serialization
{
UInt16 wLen=0;
Bool bCheck=GetUShort (ref wLen);
If (bCheck==false)
return false;

Byte [] szBuffer=new byte [wLen];


BCheck=GetByteArrary (szBuffer, wLen);
If (bCheck==true)
{
StrData=https://bbs.csdn.net/topics/Encoding.UTF8.GetString (szBuffer);
}

Return bCheck;
}

Void AddSize (int iSize)
{
M_iPos +=iSize;
If (m_iPos & gt; M_iCount)
M_iCount=m_iPos;
}

Void SetLen (UInt16 wLen)//fixed length
{
M_byBufferData [0]=(byte) (wLen & gt;> 8);
M_byBufferData [1]=(byte) ((wLen) & amp; 0 XFF);
}

Public void PutUShort (UInt16 dwData)//serialization
{
M_byBufferData [m_iPos + 0]=(byte) (dwData & gt;> 8);
M_byBufferData [m_iPos + 1)=(byte) ((dwData) & amp; 0 XFF);
AddSize (sizeof (UInt16));
}
Public bool GetUShort (ref UInt16 wData)//deserialization
{

UInt16 wRet=0;
If (CheckGet (sizeof (UInt16))==false)
return false;
WRet=(UInt16) ((UInt16) m_byBufferData [m_iPos + 0] <8);
WRet=(UInt16) (wRet | m_byBufferData [m_iPos + 1] <0);

M_iPos +=sizeof (UInt16);
WData=https://bbs.csdn.net/topics/wRet;
return true;
}
Public void PutUInt (UInt32 dwData)//serialization
{


M_byBufferData [m_iPos + 0]=(byte) (dwData & gt;> 24);
M_byBufferData [m_iPos + 1)=(byte) ((dwData & gt;> 16) & amp; 0 XFF);
M_byBufferData [m_iPos + 2]=(byte) ((dwData & gt;> 8) & amp; 0 XFF);
M_byBufferData [m_iPos + 3)=(byte) ((dwData) & amp; 0 XFF);
AddSize (sizeof (UInt32));
//dwData=https://bbs.csdn.net/topics/0x78563412;
}
Public bool GetUInt (ref UInt32 dwData)//deserialization
{

UInt32 dwRet=0;
If (CheckGet (sizeof (UInt32))==false)
return false;
DwRet=(UInt32) (m_byBufferData [m_iPos + 0] <24);
DwRet=(UInt32) (dwRet | (UInt32) m_byBufferData [m_iPos + 1] <16);
DwRet=(UInt32) (dwRet | (UInt32) m_byBufferData [m_iPos + 2] <8);
DwRet=(UInt32) (dwRet | (UInt32) m_byBufferData [m_iPos + 3));

M_iPos +=4;
DwData=https://bbs.csdn.net/topics/dwRet;
nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
  • Related