我正在使用C语言编写自己的客户端-服务器应用程序,实现TFTP协议。在阅读了TFTP的RFC并制作了一个简单的套接字客户端-服务器应用程序后,我现在有些困惑,不知道如何创建必须为TFTP协议创建的特定数据包。
例如,WRQ数据包必须按照以下方式创建:
例如,WRQ数据包必须按照以下方式创建:
2 bytes string 1 byte string 1 byte
------------------------------------------------
| Opcode | Filename | 0 | Mode | 0 |
------------------------------------------------
这是从官方RFC中提取的内容。
我有一个.h文件,其中定义了所有数据包的结构,但我不确定是否做得正确,并且在网上也没有找到相关信息。
我为此数据包创建的结构体如下:
struct WRQ {
signed short int opcode; //2 bytes
char * filename; // N bytes
char zero_0; // 1 byte
char * mode; // N Bytes
char zero_1; // 1 byte
};
我有两个疑问:
a) 当我执行sizeof(struct WRQ)时,它返回20个字节。这不是我想要的大小。为什么会发生这种情况?
b) 我应该如何定义字符串?因为我希望服务器接收字符串本身,并且我认为这样,它将接收客户端机器上字符串的指针。
我希望一切都清楚,你可以帮助我,因为我目前卡住了!