什么是c ++在写入枚举时写入套接字

时间:2012-03-30 20:35:45

标签: c++ c iostream sstream

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

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

2 个答案:

答案 0 :(得分:0)

开始写入整数值。可变的大小可以变化。在您的情况下,大小可能是1字节零之间的任何值,最大为int - 大小为零。

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

std::cout << "Size: " << sizeof(m_Command) << " Value: " << (int)m_Command << "\n";

答案 1 :(得分:0)

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