網路傳輸中,文字檔案與二進位制檔案

2021-06-20 07:29:57 字數 713 閱讀 8884

今天寫walker的網路傳輸, 在傳輸檔案時, 出現一點問題。

1.如果傳輸文字檔案, 只要乙個位元組乙個位元組地對應傳送過去即可。

2.如果傳輸二進位制檔案,也只要乙個位元組乙個位元組傳送過去就可以。。

讀寫檔案,都是以位元組流的形式。最後用vim開啟時,都是乙個位元組 轉換 成乙個字元出來給人看。

這次出現的問題是這樣的,要實現以下乙個功能:

1(有問題).先傳乙個string, ( strip.size() bytes),乙個空格(1byte), int(4bytes), 換行符(1bytes).      檔案能傳,接收檔案的時候,能以字元全部接收過來,但是因為不知道其格式,用文字檔案來顯示的話, 字串可以正常顯示, 但是4個位元組的int, 顯示出來卻不對了。

解決方法:

1(推薦,)在傳送的時候,將int也轉換成字元來傳送(sprintf)~~ , 接收到的檔案直接就能看了, 要用時,再轉成整型.(atoi)

2  (不推薦) 自定義協議, 傳送檔案的時候,額外定義協議, 比如  len string 4 int, 表示先讀個len,然後讀len個位元組存為字串,再讀個len=4,再讀4個位元組存為int.這種方法比較不推薦,因為我接收檔案的方式已經寫好,是tcp無邊界,一次讀4k的了~~ 去改無限麻煩。

總結:網路傳輸中的檔案,要把每個資料都看成字元,而不要還有整數之類的看法。

把上面的問題,全部看成字元,收到所有檔案後,要進行額外處理,再去慢慢轉換。 

文字檔案與二進位制檔案

從本質上說所有檔案都是二進位制檔案,文字i o是在二進位制i o基礎上提供的一層抽象,它封裝了字元的編碼和解碼過程。在文字i o中自動進行編碼與解碼。在windows和dos系統中,狹義的文字檔案是指擴充套件名為txt的檔案。實際上,那些沒有規定格式的,由可理解的的ascii以及其它編碼文字組成的檔...

文字檔案與二進位制檔案

維基百科 二進位制檔案一般指包含ascii及擴充套件ascii字元中編寫的資料或程式指令的檔案。廣義的二進位制檔案即為檔案,由檔案在外部儲存裝置的存放方式為二進位制而得名。狹義的二進位制檔案即指除文字檔案以外的檔案。簡單來說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編...

文字檔案與二進位制檔案

什麼是文字檔案,什麼是二進位制檔案?在windows和dos系統中,狹義的文字檔案是指擴充套件名為txt的檔案。實際上,那些沒有格式的,由可理解的ascii以及其他編碼文字組成的檔案都是文字檔案,如c原始檔,html超文字檔案,xml。除此之外的其他檔案都是二進位制檔案,如word檔案doc,影象格...