0

当我编写 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));

我希望我包含了足够的信息并包含声明...

4

2 回答 2

0

开始写入一个整数值。变量的大小可以变化。在您的情况下,大小可能介于 1 字节零到int-size 零之间。

要准确查看正在编写的内容,请添加以下代码:

std::cout << "Size: " << sizeof(m_Command) << " Value: " << (int)m_Command << "\n";
于 2012-03-30T20:36:45.180 回答
0

如果我理解正确,您假设“JOIN”作为字符串通过网络传输。这是不正确的。JOIN是整数值的别名(如果它是枚举的第一个成员,则为 0)。该整数值通过网络传输,服务器知道;该特定整数值是“JOIN”的别名。这就是您的服务器按预期工作的原因。
此外,您在wireshark日志中看不到“JOIN”作为字符串,而是“JOIN”别名的整数值。

于 2012-03-30T21:15:04.787 回答