当写入枚举时,c++向套接字写入什么

what is c++ writing to the socket when an enum gets written

本文关键字:套接字 什么 c++ 枚举      更新时间:2023-10-16

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

我希望我包含了足够的信息和声明。。。

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

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

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

如果我理解正确,您假设"JOIN"是作为字符串通过网络传输的。这是不对的。JOIN是整数值的别名(如果它是枚举的第一个成员,则为0)。该整数值通过网络传输,服务器知道;该特定整数值是"JOIN"的别名。这就是为什么您的服务器可以按预期工作
此外,在wireshark日志中,您不能将"JOIN"视为字符串,而只能将其作为别名的整数值。