当我编写ENUM引用(如下)时,什么是写入套接字?我在whireshark中捕获了一些东西,但它不像ENUM名称“JOIN”..它的长度也不一样。服务器以某种方式理解此代码发送JOIN枚举。枚举写入时,C++写入套接字是什么
#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));
我希望包括足够的信息,包括报表...
将枚举写入套接字让我感觉到即将到来的厄运。 – Corbin 2012-03-30 20:39:14
它正在编写任何'm_Command'在* native endian *中的字节表示形式。最有可能的是,它正在写一个4字节的整数。但是,如果你希望你的代码在不同的编译器和体系结构中稳健运行,可以使用具有网络字节顺序的固定大小的整数(参见['htonl(3)'](http://linux.die.net/man/3/htonl ))。或者更好的是,使用序列化/编组库,例如[protobuf](http://code.google.com/p/protobuf/)。 – 2012-03-30 20:43:32
所有更多的理由支持我的方法来重新编写客户端...我不能改变服务器。不幸的是,我还没有编译和添加打印语句的奢侈。 – jcalfee314 2012-03-30 20:57:55