此代码工作正常,但后来我对其进行了修改
FILE *my_file = fopen(filename, "ab");
while(size>0){
size = recvfrom(s, buffer, 128, 0, (LPSOCKADDR) &sa_in, &senderSize);
if(size > 0)
{
fwrite(buffer, 1, size, my_file);
memset(buffer, 0x0, 128);
}
}
到此:
FILE *my_file = fopen(filename, "ab");
while(size-128>0){
size = recvfrom(s, packet, 256, 0, (LPSOCKADDR) &sa_in, &senderSize);
buffer = getBuffer(packet); //first 128 bytes = control data
if(size-128 > 0)
{
fwrite(buffer, 1, size-128, my_file);
memset(buffer, 0x0, 128);
}
}
我完全得到了别的东西,即使我在打印缓冲区时信息完全相同。
而不是得到这个:
ÿØÿà JFIF H H ÿþ Content First
ÿÛ C
$.' ",#(7),01444'9=82<.342ÿÛ C
2!!22222222222222222222222222222222222222222222222222ÿÀ 2 2" ÿÄ ÿÄ 0 !1"AQaq2BC±‘’áðñÿÄ ÿÄ !Aa1ÿÚ ? ¶u¢¦¡7*à\îÜ_vÚwpOOªùjÕ[ÒR`ÜYZÕûJ;ý§ªÖ/NNÕ*¶‡b`l<µ I÷à¤}Vˆ¤ä$žvþ]©È>_Ít!®¥ÛìçÏeÆm%Ñë
W˜ájäðÅÚàÒsÂú‚GÑ8ó‚ÓÚf ·É*“%sX C»Fx뻵W/eµú‹ò•©i]bo³W
S
±$Fn@Q …ã9ÁIã=}ªUk¦æ¾þŸ´«ÆèB?‡p”äŒíÇ\yóëY,rº6ycÆË"•„ÂÞDvëËqÄ ¯ºÆãŽN<©YšÇk6—¢j£r-1¥¶„‡B|;ÀÆ3ô
hDí$d$¤äÒkÕЮqû‰ÑY’Ös±Ô }yóªÞãØÔg$¾íºæ¶P%:×x}7g¦}³óNâϪBYµäåÊ%@€vd§<=zgÚ¹ I…dŽI<“Èô®só”ÊŒã¦÷-²”©I<€@çʸ3Þ:”»·€¢
LüškèŸÂJ=Æà‰ u¹N¶éh0§¡¸¶ Iëúq[¯f1a¿x’ꑹö›Ê@QêîŸ_u¦I²]á5ßÉ1¦â%Èå) ÈŸLãúÕù¤¬û•”ÂîÜSÈ9%#—IÏÇ ¥³I(õèÖ7;~錣ġǵ+¾”‰Ð+ÞÕuÛ-¶ùÆ+ï¸J”ŒïÚ=:gÜžjg³ëÌ«Ö’"{ÅÙ‰ZÐâ” '
àà{S7<k©hOHy¦–C{p‡BO^>EvÈ·G~Dyv>Áð8Žß4û¤úVŽQà£FJæå}Ú¶ÇSYÌ\L;–_)
Ú@Îx<29#ø©˜Vø0íć–â¤xP„¿?沈@ õ£-Öép®V©h0¤˜±PÐHdcÅÈë““ÿ j¶Ú«-Å)]“!³6ОFXy²Ú’8ð‘Ž+NÚWc±F¶®A‘Ün Z†ÝĤ}ÕJR¢ÝQ4®Å)J‚E)J R” )J R” ÿÙ
我得到了这个:
ÿØÿà 222222222222222222222222222222222222222222222222ÿÀ 1"AQaq2BC±‘’áðñÿÄ J;ý§ªÖ/NNÕ*¶‡b`l<µ n@Q …ã9ÁIã=}ªUk¦æ¾þŸ´«ÆèB?‡p”äŒíÇ\yóëY,rº6ycÆË"•„ÂÞDvëËqÄ ¯ºÆãŽN<©YšÇk6—¢j£r-1¥¶„‡B|;ÀÆ3ô
hDí$d$¤äÒkÕЮqû‰ÑY’Ös±Ô žjg³ëÌ«Ö’"{ÅÙ‰ZÐâ” ˆ@ õ£-Öép®V©h0¤˜±PÐHdcÅÈë““ÿ
这是我成功传输二进制文件时的控制台输出:
128
╪ α
128
222222222222222222222222222222222222222222222222 └
128
1‼"AQaqü¶2BC▒æÆß≡± ─
128
J;↨²º♠¬▲╓/NN╒*╢b♂`l<☻╡
128
nQ à♀πÉ9┴Iπ=}¬‼Ukªµ╛■ƒ┤½╞ΦB?▲çpöΣîφ╟\y≤δY,r║6yc╞╦"òä┬▐DvÉδ╦q─á♣»║╞πÄN<⌐Yܶ╟k6ùój
hDφ$d∟$ñΣ▲⌂╥k╒‼¡╨«q√ë╤YÆ╓s▒╘♣
128
128
128
₧jg│δ╠½╓ÆÅ"{┼┘ëZ╨Γö
113
ê♦►@ ⌡♠ú-╓Θp«‼V⌐h0▬ñÿ▒P╨Hdc┼╚δôô
正如您所看到的,它会将数据写入控制台中,而不是以应有的形式编写。
编辑:
这是其他程序的控制台输出:
0
╪ α
buffer: ╪ α
0
222222222222222222222222222222222222222222222222 └
130
buffer:222222222222222222222222222222222222222222222222 └
0
1‼"AQaqü¶2BC▒æÆß≡± ─
buffer:1‼"AQaqü¶2BC▒æÆß≡± ─
0
J;↨²º♠¬▲╓/NN╒*╢b♂`l<☻╡
buffer:J;↨²º♠¬▲╓/NN╒*╢b♂`l<☻╡
0
nQ à♀πÉ9┴Iπ=}¬‼Ukªµ╛■ƒ┤½╞ΦB?▲çpöΣîφ╟\y≤δY,r║6yc╞╦"òä┬▐DvÉδ╦q─á♣»║╞πÄN<⌐Yܶ╟k6ùój
hDφ$d∟$ñΣ▲⌂╥k╒‼¡╨«q√ë╤YÆ╓s▒╘♣
buffer:nQ à♀πÉ9┴Iπ=}¬‼Ukªµ╛■ƒ┤½╞ΦB?▲çpöΣîφ╟\y≤δY,r║6yc╞╦"òä┬▐DvÉδ╦q─á♣»║╞πÄN<⌐YÜ
hDφ$d∟$ñΣ▲⌂╥k╒‼¡╨«q√ë╤YÆ╓s▒╘♣
0
buffer:
0
buffer:
0
₧jg│δ╠½╓ÆÅ"{┼┘ëZ╨Γö
buffer:₧jg│δ╠½╓ÆÅ"{┼┘ëZ╨Γö
0
ê♦►@ ⌡♠ú-╓Θp«‼V⌐h0▬ñÿ▒P╨Hdc┼╚δôô
buffer:ê♦►@ ⌡♠ú-╓Θp«‼V⌐h0▬ñÿ▒P╨Hdc┼╚δôô
.
答案 0 :(得分:0)
你要保留memset的128
memset(buffer, 0x0, 128);
试试这个
memset(buffer, 0x0, 256);
答案 1 :(得分:0)
fwrite(buffer, 1, size, my_file);
我认为你应该提出与size
不同的内容,最有可能是size - 128
。