Re: [問題] 以 Winsock 下載二進位檔案會斷掉

看板C_and_CPP (C/C++)作者 (AhBi 阿B)時間15年前 (2010/08/12 11:55), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串2/2 (看更多)
我發現問題了 char szBuffer[1024]; unsigned int readlen; //(中略) while( readlen= recv(sock,szBuffer,strlen(szBuffer),0) ) fwrite(szBuffer,1,readlen,fp); 我在傳buffer大小給recv的地方用了strlen() 因此只要szBuffer裡面有 00 字元 recv能用的 buffer就越來越少 recv(sock,szBuffer,1024,0) 改成固定的值就OK了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.71.78.200

08/12 13:14, , 1F
不是那個問題喔~00在字串裡意味著結束 你是不是應該用
08/12 13:14, 1F

08/12 13:14, , 2F
readline的大小去寫檔呢? 而不是用"strlen(szBuffer)"
08/12 13:14, 2F

08/12 13:19, , 3F
被排版弄到眼殘了,SORRY, 您的解法沒錯~
08/12 13:19, 3F

08/12 13:20, , 4F
是因為您send跟recv是用同一個szBuffer,如果recv是用另一個
08/12 13:20, 4F

08/12 13:22, , 5F
szRecvBuffer[1024]={0},用strlen第一次進while就死了
08/12 13:22, 5F

08/12 14:36, , 6F
sizeof(szBuffer) 也行,這樣改 buffer 大小不用改兩次
08/12 14:36, 6F

08/12 15:39, , 7F
謝謝各位。現在又加了處理header的部分,可以下載了
08/12 15:39, 7F
文章代碼(AID): #1COt3C94 (C_and_CPP)
文章代碼(AID): #1COt3C94 (C_and_CPP)