Вопрос | Ответ |
---|---|
struct FLAP { unsigned char m_id; //!< идентификатор (всегда равен 0x2A) unsigned char m_channel; //!< номер канала unsigned short m_seqNumber; //!< порядковый номер пакета unsigned short m_size; //!< размер пакета }; При чтении в эту структуру следующего дампа: 2a 01 54 6c 00 04 в поле “размер пакета” было не 4 а 1024. Т.е. два байта были переставлены местами. Почему? | В архитектуре х86 в памяти байты поменены местами. ntohs как раз для этого случая. |
Можно ли перевести сокет из блокирующего в неблокирующий в процессе его работы, когда уже произошел connect | bool setAsync(int h,bool isAsync) { int fl=fcntl(h,F_GETFL); if(isAsync) fl |= O_NONBLOCK; else fl &= ~O_NONBLOCK; return 0==fcntl(h,F_SETFL,fl); } |
Что будет, если я в конструктор к string дам const char * без нуля в конце? | <octofox> ж… будет, прости господи для таких случаев есть std::string(Iterator begin, Iterator end) |
Как выполнить disconnect? | Всё банальное просто: man 2 shutdown |
Можно ли закрытый сокет открыть заново, вызвав connect на другой ip:port? | Опытным путем полуил что нет: connect: : Transport endpoint is already connected |