【发布时间】:2014-07-01 20:36:05
【问题描述】:
我希望得到您的建议。 我需要使用 tcp 客户端/服务器来实现一些协议。它有几个消息,其中一些带有奇数字节,例如:
typedef struct _msg1
{
unsigned short opcode
unsigned char value
}msg1;
您认为实现它的最佳方式是什么,以避免字节顺序问题。 我想到了以下原则:
- 在结构定义上使用 pragma pack(1) 以避免填充
-
在读/写结构时使用 htons/htonl,例如:
mymsg1.opcode = htons(0x1234);
mymsg1.value = 0x56;
有些消息更丑陋,例如以下它的字节数在运行时之前是未知的,我仍然不确定定义它以进行发送的最佳方法是什么。
typedef struct _msg_errors
{
unsigned short opcode
unsigned char errortable[DEPENDS_ON_NUMBER_OF_REAL_ERRORS]
}msg_errors;
谢谢,冉
【问题讨论】:
标签: networking struct tcpclient endianness pragma