Что записывается в сокет, когда я пишу ссылку 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
Это запись байтового представления того, что 'm_Command' находится в * native endian *. Скорее всего, он пишет 4-байтовое целое число. Но если вы хотите, чтобы ваш код был надежным для разных компиляторов и архитектур, используйте целые числа фиксированного размера с сетевой строгостью (см. ['Htonl (3)'] (http://linux.die.net/man/3/htonl)). Или еще лучше использовать библиотеку сериализации/маршалинга, такую как [protobuf] (http://code.google.com/p/protobuf/). –
Тем более, что я поддерживаю свой подход к переписыванию клиента ... Я не могу изменить сервер, хотя. К сожалению, у меня пока нет возможности компилировать и добавлять заявления печати. – jcalfee314