我正在尝试编写服务器的C#版本。
原始客户端和服务器都是用C ++编写的。
从我的C ++客户端,我可以连接到新的C#服务器。但是由于我的C ++客户端使用指针发送数据,因此我无法正确阅读它。
C ++客户端将Char Ptr(char * pData)发送到我的服务器。这个数据包含一个Header(告知我发送的是哪种数据,即:Request Login)和一个Body(包含实际数据,即:ID和密码)。
检查旧服务器,我可以看到它读取这样的数据:
DWORD *dwpMsgID;
dwpMsgID = (DWORD *)(pData + DEF_INDEX4_MSGID); // define DEF_INDEX4_MSGID 0 because its the header position
switch (*dwpMsgID)
{
...
case MSGID_REQUEST_LOGIN: doSomething(); // define MSGID_REQUEST_LOGIN 0x0DF3074F
...
}
然后,它会像这样检查登录/密码:
cp = (char *)(pData + DEF_INDEX2_MSGTYPE + 2);
memcpy(cAccountName, cp, 10);
cp += 10;
memcpy(cAccountPass, cp, 10);
cp += 10;
我的疑问是:因为我从C#套接字获取一个byte [],我怎么能检查Header是否与“0x0DF3074F”匹配,然后获取AccountName和密码? 我试图将该byte []转换为String(使用Encoding.Unicode.GetString()或Encoding.ASCII.GetString()),但我没有成功。
提前致谢!欢迎任何帮助! 此致
答案 0 :(得分:1)