Hola que tal. Se me ha presentado un problema intentando adaptar una aplicacion de tipo servidor (C#) a un cliente ya hecho en C++.
Les paso a explicar en que consiste el envio de datos desde el cliente:
char cData[1024];
DWORD *dwp;
WORD *wp;
ZeroMemory(cData, sizeof(cData));
dwp = (DWORD *)cData;
*dwp = 0x0442; // Seria el Identificado del mensaje
wp = (WORD *)(cData + 4);
*wp = 0x002; // Seria el tipo de mensaje
// Demas datos del buffer a mandar
Yo desde mi aplicacion servidor estoy intentando corroborar estos datos. He probado varias maneras, ya sea utilizando metodos de copia de la clase Array y ninguna me ha resultado, por lo que comence a utilizar codigo no seguro.
Este codigo se refiere ya a la decodificacion del Buffer del socket, ya que los datos los recibo sin problema. Esto es lo ultimo que intente:
byte[] m_Buffer; // Atributo de clase que contiene los bytes recibidos del cliente
uint m_ID; // Atributo de clase que contiene el Identificador
ushort m_Type; // Atributo de clase que contiene el tipo
public unsafe void DecodeMainAttr()
{
if (m_Buffer == null) return;
fixed (byte *pBuffer = this.m_Buffer)
{
this.m_ID = *((uint *)pBuffer);
this.m_Type = (*((ushort *)pBuffer
+ sizeof(uint)); // + 4 }
}
El resultado de los datos en los 2 atributos son cualquier numero.
Espero una solucion a esto, gracias..