为什么我在发送和接收相同的数据时没有写入相同的文件
How come I am not writing the same file when I am sending and receiving the same data?
这段代码运行良好,但后来我修改了它
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┼╚δôô
.
您为memset 保留128
memset(buffer, 0x0, 128);
试试这个
memset(buffer, 0x0, 256);
fwrite(buffer, 1, size, my_file);
我认为你应该放一些与size
不同的东西,很可能是size - 128
。
相关文章:
- 从 bmp 文件数据创建 MFC CBitmap
- 从存储为 Windows 资源 (c++) 的 png 中获取 png 文件数据
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 获取文件数据预处理器宏
- 错误的值是使用c++从CSV文件数据写入数组
- 无法在可视C++中检索资源文件数据
- 将文本文件数据读入字符数组时提取运算符的歧义
- 如何使用curl c ++源代码发布wav文件数据,如何使用c ++使用--data-binary?
- 如何在C++中读取 UTF-8 文件数据
- 如何在结构中存储二进制文件数据
- 无法从 turbo c 程序中的文件检索文件数据
- 使用 fstream 将文件数据从当前位置保存到文件末尾
- 通过Google Protobuf发送二进制文件数据
- 在通过套接字向服务器发送文件数据时,我得到了一些垃圾值?为什么
- 如何使用dlang读取二进制文件数据
- 程序使用FSCANF读取文件数据后崩溃
- 检测二进制文件数据的端性
- C++ 从文本文件数据类型读取为结构,并将数据存储在列表的向量中
- 将 FFT 应用于 WAV 文件数据的 C++
- C++内存映射的文件数据预取