当我写ENUM参考(下面)时,写入套接字的是什么?我在whireshark中捕获了一些东西,但它与ENUM名称“JOIN”不同。它的长度也不一样。服务器以某种方式理解这段代码发送了JOIN枚举。
#include <sstream>
#include <iostream>
... WriteToSocket( SOCKET hSocket, char *buf, int iCount)
send(hSocket, buf, iCount, 0);
enum { JOIN, ...};
m_Command = JOIN;
WriteToSocket (hSocket, (char *)&m_Command, sizeof(m_Command));
我希望我提供足够的信息并包含声明...
答案 0 :(得分:0)
开始写入整数值。可变的大小可以变化。在您的情况下,大小可能是1字节零之间的任何值,最大为int
- 大小为零。
要准确查看正在编写的内容,请添加以下代码:
std::cout << "Size: " << sizeof(m_Command) << " Value: " << (int)m_Command << "\n";
答案 1 :(得分:0)
如果我理解正确,您假设“JOIN”通过网络传输为字符串。这是不正确的。 JOIN
是整数值的别名(如果它是枚举的第一个成员,则为0)。该整数值通过网络传输,服务器知道;该特定整数值是“JOIN”的别名。这就是为什么你的服务器按预期工作。
你也不能在wireshark日志中看到“JOIN”作为字符串,但是整数值是“JOIN”的别名。