TFTPプロトコルを実装しているCで私自身のクライアントサーバーアプリケーションを作っています。 TFTPのRFCを読んでシンプルなソケットクライアント/サーバーアプリケーションを作った後は、TFTPプロトコル用に作成しなければならない特定のパケットを作成する方法について少し混乱します。自分のパケットをUDP経由で送信するにはどうしたらいいですか?
2 bytes string 1 byte string 1 byte
------------------------------------------------
| Opcode | Filename | 0 | Mode | 0 |
------------------------------------------------
公式RFCから抽出される:
たとえば、WRQパケットは、この方法でなければなりません。
私はパケットのすべての構造を定義する.hを持っていますが、私が正しくやっているかどうかわかりませんし、ウェブ上で情報を見つけるのは幸運でもありません。
私はこのパケットのために作成された構造体は次のとおりです。私ははsizeofを作るとき
a)は(構造体は、WRQ)が20のバイトを返します。私は2つの疑問を持って
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
};
。これは私が手に入れたいサイズではありません。なぜこれが起こるのですか?
b)文字列をどのように定義する必要がありますか?サーバーが文字列自体を受け取るようにしたいと思うので、この方法では、クライアントマシンの文字列へのポインタを受け取ることになります。
私はすべてがはっきりしていると私は瞬間に立ち往生しているので、私を助けることができることを願っています!
をあなたは、あなたの質問http://stackoverflow.com/questions/5596428/sizeofstruct-returns-unexpected-value – Peacelyk
質問に対する答えを得る可能性があります扱われるパケットで?それらはヌルで終端されているか、バイト長のフィールドを持っていますか? – Duck
Peacelykさん、ありがとうございました! –