本地string轉化到網路內容的一種思路

2021-10-07 22:33:11 字數 1456 閱讀 6032

c++,在網路傳輸中,類似string型別, vector型別,等等,都不能直接轉化為傳輸的結構. 因為他們都是屬於不定長型別.

那麼如何在網路中傳輸這些資料呢?

如果我們定義這樣的結構, 就過於冗餘,浪費網路空間.

類似:

struct netstrings

這種就是每個string支援100個字元,這樣的字元由100個.

那麼我們接下來採取一種,記錄每乙個字串長度的方式,然後把所有的字串打成乙個包.

typedef

struct tag_netstrings

memset

(buf,0,

1024*4

);}void

tovector

(vectorbool

>>

&strs)

}void

fromvector

(vectorbool

>>

&strs)

memcpy

(buf, str.

c_str()

, str.

length()

);}} st_netstrings;

main檔案為:

vectorbool

>> strs;

strs.

push_back

(make_pair

("資料夾"

,true))

; strs.

push_back

(make_pair

("恐龍"

,true))

; strs.

push_back

(make_pair

("天空"

,true))

; strs.

push_back

(make_pair

("打工"

,false))

; st_netstrings netstrings;

netstrings.

fromvector

(strs)

; vectorbool

>> newstrs;

netstrings.

tovector

(newstrs)

;for

(vectorbool

>>

::iterator iter = newstrs.

begin()

; iter != newstrs.

end(

); iter++

)

這種其實就是把字元長短做記錄來消除不確定性,然後實際內容一起打包. 節省有效資訊.

這種方法其實比較初級,有些粗糙,但是如果真的要做的更好,也有很大空間. 沒關係,能知道這個意思就行.

部署本地內容到伺服器

內網穿透之ngork 以ngork伺服器作 將本地tomcat容器對映到ngork伺服器 使用方式 註冊ngork,開通隧道,開啟sunny ngrok啟動工具.bat並輸入隧道id,使用隧道網域名稱訪問得到與http localhost 8080 一樣的頁面 配置網域名稱之阿里雲 在阿里雲申請網域...

c 同步網路時間到本地

c 同步時間 第一種方法 借用系統介面 dllimport user32.dll private static extern bool animatewindow intptr hwnd,int dwtime,int dwflags dllimport kernel32.dll private st...

爬取內容到本地為亂碼格式解決方案

錯誤 獲取html defget html self,url result requests.get url url,headers self.headers return beautifulsoup result.text,lxml 錯誤 執行結果 正確 獲取html defget html se...