1

皆さん、今晩は。

#include を使用する C++ での割り当て用の TFTP クライアントの作成に問題があります

私はcharバッファを送信しています:

buffer={'0','2','f','i','l','e','n','a','m','e','0','o' ,'c','t','e','t','0'};

コードの使用:

sendto(sock,buffer,strlen(buffer), 0, (sockaddr *) &serverAddr, sizeof(sockaddr));

しかし、WireShark でこの転送を見ると、パケットの Opcode 部分を見ると、「Opcode: Unknown (12338)」と表示されます。文字列からオペコードを選択したにもかかわらず

ここに画像の説明を入力

私は絶対に立ち往生しています、どんな助けもいただければ幸いです。メッセージを送受信できれば、あとは簡単に処理できると確信しています。

私がしたことをここに投げるだけですが、マークされた答えは基本的にそれでし

buffer={(BYTE)0,(BYTE)2,'f','i','l','e','n','a','m','e',(BYTE)0, 'o','c','t','e','t',(BYTE)0};

sendto(sock,buffer,sizeof(buffer), 0, (sockaddr *) &serverAddr, sizeof(sockaddr));

4

2 に答える 2

2

strlen(buffer)ではなくsizeof(buffer)...

strlen は、'\0'- が最初に出現した時点で文字のカウントを停止するため、バッファーに存在しないため、バッファー配列に未指定の値を返します'\0'

オペコードでバッファを開始する場合02は、数字表現ではなく整数として渡します。

buffer={0,2,'f','i','l','e','n','a','m','e','0','o','c','t','e','t','0'};
//      ^ ^  simple numbers - not characters - not sure about rest of your buffer
于 2012-10-21T18:15:34.810 に答える
1

10 進数の 12338 は 0x30、16 進数の 0x32 であり、これはバッファの '0' と '2' に対応します。

ascii chars を使用していますが、10 進数/整数をバッファーに設定して使用する必要が(char) 0x00あります。(char) 0x02

于 2012-10-21T18:16:08.423 に答える