c++ Convert struct to bytes

D:\stock\Tskingfromgoogle\src\NetTS\TW.cpp

Convert struct  to bytes

//Convert struct  to bytes 2019/05/20 by freeman
int ConstructLoginBuffer(BYTE* buffer, size_t maxlen, LPCTSTR lpszUser, LPCTSTR lpszPasswd)
{
	int nLen = 0;
	int nLenUser = strlen(lpszUser);
	int nLenPasswd = strlen(lpszPasswd);

	TW_LOGIN	packet;
	memset(&packet,0,sizeof(packet));
	packet.m_header.m_magic = TW_MAGIC;
	if(maxlen < (int)(5 + sizeof(TW_HEADER) + nLenUser + nLenPasswd))
	{
		nLen = 5 + sizeof(TW_HEADER);
		return -1;
	}
	packet.m_name_len = (WORD)nLenUser;
	memcpy(packet.m_data, lpszUser, nLenUser);
	*(WORD*)(packet.m_data + nLenUser)	=	(WORD)nLenPasswd;
	memcpy(packet.m_data + nLenUser + sizeof(WORD), lpszPasswd, nLenPasswd);

	nLen = 5 + sizeof(TW_HEADER) + nLenUser + nLenPasswd;
	ConstructLength(packet.m_header, nLen - sizeof(packet.m_header));

	if(buffer)
		memcpy(buffer, &packet, nLen);
	return nLen;
}

  

posted @ 2019-06-01 15:10  FreeBoyGirl  阅读(1001)  评论(0编辑  收藏  举报