Re: [問題] recv的問題,不知道檔案大小

看板C_and_CPP (C/C++)作者 (Mr. Everything)時間16年前 (2010/06/04 20:02), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《gemhung (deji394su3 )》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 遇到的問題: (題意請描述清楚) : 請問各位一個問題,就是我在 linux 寫了一個 server 要recv檔案 : 但是檔案大小並不知道,因為如果用一個while去接收的話, : 好像會因為 blocking 的關係,就收了幾次之後 client已經send完了, : 但是server 還是 recv 會 hang在那邊不動了。 : 請問要怎麼做才好阿.... socket 我是新手....Orz : 希望得到的正確結果: : 程式跑出來的錯誤結果: : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : Linux : 有問題的code: (請善用置底文標色功能) : 補充說明: 比較常見的作法是把你的封包分成四個部份 ------------------------------------- | StartTag | Header | Body | EndTag | ------------------------------------- 其中StartTag, Header, EndTag的部份長度固定, Body長度可變 然後在Header中紀錄Body的長度 收的時候先收StartTag的長度, 再收Header的長度 計算出Body的長度以後再收Body的長度, 最後收EndTag的長度 嚴謹一點就從StartTag開始判斷, 如果開頭不是StartTag就當收到空氣 最後收到EndTag代表這個封包結束 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.204.235

06/04 20:17, , 1F
那樣不嚴謹吧,要是 Body 裡有跟 EndTag 的序列一樣怎麼辦
06/04 20:17, 1F

06/04 20:17, , 2F
還是用 Header 判斷長度最實在,不管是嚴謹還是非嚴謹法。
06/04 20:17, 2F
文章代碼(AID): #1C2EjXfU (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1C2EjXfU (C_and_CPP)