LINUX網路傳輸的序列化和反序列化C

2022-07-15 16:06:15 字數 853 閱讀 7849

來到公司實習,開始面向實習生有乙個小專案,當然了,伺服器就由我乙個人來寫了,1.0主要完成的使用純c 寫linux下udp的伺服器框架,大部分還都是以前在學校做過的專案套用的,難度不大,經過跟大boss討論,版本2.0決定引入類,然後改用tcp進行傳輸,但是突然轉變成c++還是有些不適應,雖然引入了類,但是還是過多的引用字元陣列,大boss要求,3.0全面改成string 的c++風格,應用stl。這下就麻煩了,因為有乙個問題,型別string 是沒辦法直接進行網路進行傳輸的,或者是我不會,反正定義的報文應用的內聯,沒辦法將帶建構函式的類放進去。3.0的改動就是把所有的報文全部改成了訊息類(例如 登陸請求訊息類,登陸應答訊息類),類中包括所需要傳輸的資料,但是如果真要 應用send函式傳送出去,還得需要將該訊息類進行序列化進乙個buf中,才能被傳送。

**://登入請求類

class req_login : public req

void setdate(string name,string psw)

string getdatename()

string getdatepsw()

void settype(c2s_req_type type)

//序列化函式

void inorder(char * buf)

memcpy((void*)&length,(void *)order,sizeof(int));

order+=sizeof(int);

allength+=length;

for(int i = 0;i < length;i++)}};

其實用法不然,感覺還是理解方面,就是通過不同的位元組,儲存不同的資訊,比如用前四位元組儲存型別,然後以此類推,不知道對還是不對,總之是實現了。

python marshal 物件序列化和反序列化

有時候,要把記憶體中的乙個物件持久化儲存到磁碟上,或者序列化成二進位制流通過網路傳送到遠端主機上。python中有很多模組提供了序列化與反序列化的功能,如 marshal,pickle,cpickle等等。今天就講講marshal模組。注意 marshal並不是乙個通用的模組,在某些時候它是乙個不被...

Webservice SOAP傳輸序列化總結

一.所有webservice中傳遞的物件都必須能夠序列化,這個是作為在網路之間傳輸的必要條件。xml webservice和soap標準支援的資料型別如下 1.基本資料型別.標準型別,如 int float bool datetime string等基本資料型別 2.列舉.支援列舉enum定義的型別...

Webservice SOAP傳輸序列化總結

一.所有webservice中傳遞的物件都必須能夠序列化,這個是作為在網路之間傳輸的必要條件。xml webservice和soap標準支援的資料型別如下 1.基本資料型別.標準型別,如 int float bool datetime string等基本資料型別 2.列舉.支援列舉enum定義的型別...