自動更新プログラムに問題があります
ウェブサイトからアップデートをダウンロードして保存することになっていますが、問題は(これは頻繁に発生すると確信していますが、Googleで答えを得るキーワードをフレーズできませんでした).exeデータを保存します想定どおりに受け取りません。バイトをacsiに保存します...それを説明しましょう:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 MZ ÿÿ
00000010 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ¸ @
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000030 00 00 00 00 00 00 00 00 00 00 00 00 B0 00 00 00 °
このデータ (正しいデータです) 新しいプログラムでは次のようになります。
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 0D 0A 34 44 35 41 39 30 30 30 30 33 30 30 30 30 4D5A9000030000
00000010 30 30 30 34 30 30 30 30 30 30 46 46 46 46 30 30 0004000000FFFF00
00000020 30 30 42 38 30 30 30 30 30 30 30 30 30 30 30 30 00B8000000000000
00000030 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 0040000000000000
ご覧のとおり、コードバイトをASCII値として書き込みます...これは私が使用しているコードです
受信部分:
char szRecvBuff[10000] = "" ;
string szRecvHolder = "" ;
int iLastCharacter = 0;
recv(Socket, szRecvBuff, sizeof(szRecvBuff), 0);
szRecvHolder = szRecvBuff;
iLastCharacter = szRecvHolder.find_last_of("\n");
if(iLastCharacter < szRecvHolder.size() && iLastCharacter > 0 ){
szRecvHolder.erase(iLastCharacter);
}
return szRecvHolder;
}
...
...
{
...
...
Recv();
string Edat = Recv();
std::ofstream put("Eprog.exe", ios::hex );
put << Edat.c_str();
put.close();
Google を使用してみましたが、適切な結果が得られるような質問をすることができませんでした。