當我編寫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