99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

相同的結構體,服務端和客戶端字節長度差8個字節,咋回事呢?

0
分享至

代碼報了個錯:“byte array size is smaller than the size of the structur”,意思就是byte數組的大小小于結構體的大小,這個錯報出來的原因是我代碼中有個邏輯,需要將byte數組轉換成結構體,但很顯然,我沒有轉換成功,這是咋回事呢?



這個錯報得我莫名其妙的,找了一個小時左右都沒找到問題出在哪,但是最后發現問題的時候,我甚至有些無語。在說清楚問題到底出在哪之前,我們得先了解下代碼的業務邏輯,然后您就知道為什么開始我覺得莫名其妙了!

代碼的業務邏輯是這樣的,我們的業務中有一個服務端和很多個客戶端,客戶端會定期給服務端發送消息,消息是以結構體的形式發送的,當然,在發送消息的時候,需要將結構體轉換成byte數組。

為了確保發送消息的一致性,我特地封裝了一個專門用來處理消息的函數庫,這樣就能確保每個客戶端在發送和接收消息的時候不會出現任何差錯。

但是,差錯偏偏就出現了!在某個客戶端上就出現了文章開頭的那個錯!

經過調試,我發現所有客戶端發送的消息內容都是一樣的,并沒有任何區別。

結構體屬于基本數據類型,因此在定義的時候,長度就已經確定了,我在服務端進行調試,發現結構體的長度為288,但是,服務端接收到的byte數組長度卻只有280,如此一來,在將byte轉換成結構體的時候,因為長度不一致,導致了轉換失敗。

前面說了,我專門封裝了一個消息處理的庫,服務端和客戶端使用的是庫里面同一個結構體,不可能會出現兩邊長度不一致的情況。

事出反常必有妖!

服務端是同一個服務端,因此問題只可能出現在客戶端的代碼上!因為我們的客戶端有不同版本,每個版本有單獨的代碼,而代碼只有略微差別。

我拿了不同版本的客戶端代碼進行調試,詭異的是,出問題的那個客戶端在發送消息時,結構體的長度偏偏就是280,而其他客戶端在發送消息時,結構體長度卻是288!

一個小時都過去了,我硬是沒找出問題所在,于是,我只能使用笨辦法,那就是作對比,看看出問題的客戶端代碼和沒出問題的客戶端代碼有什么不同。

這么一對比,就讓我找到了差異點,原來,出問題的客戶端代碼在編譯的時候勾選了“首選32位”,我一拍腦袋:“原來是這樣!”

這個結構體的內容很簡單,里面是由一個Int64字段+兩個Int32字段+一個指針+一個指定了長度的字符串字段組成,其中,字符串的長度被指定為255。



公司代碼是用C#編寫的,在C#中,正常情況下,Int64所占字節數為8位,Int32所占字節數為4位,指針所占字節數為8位。

而指針類型在32位環境和64位環境里面所占用的字節是不一樣的,在32位環境里占4個字節,而在64位環境里則占8個字節!

結語

因此,最終真相大白!于是我去除勾選“首選32位”,再次編譯,發現結構體的長度變成了288!

說到這里,肯定有人關心為什么項目被勾選了“首選32位”,因為我一直沒有將代碼上傳代碼庫,所以具體是怎么發生的,其實我也不知道,也許是IDE默認就給勾上了,但是因為一直沒測到這,所以問題一直沒被發現。

聲明:個人原創,僅供參考

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
歐冠終章:巴黎奪冠,阿森納抱怨有效,歐足聯已決定下賽季改規則

歐冠終章:巴黎奪冠,阿森納抱怨有效,歐足聯已決定下賽季改規則

越嶺體育
2025-06-01 09:31:23
弗拉格:和詹姆斯交手將很酷 他在聯盟的時間也快到最后了

弗拉格:和詹姆斯交手將很酷 他在聯盟的時間也快到最后了

直播吧
2025-06-01 17:39:30
瑞幸多款飲品降價3元,邁入“6塊9”時代

瑞幸多款飲品降價3元,邁入“6塊9”時代

21世紀經濟報道
2025-05-30 14:52:04
20年,維持原判!李鐵二審結果出爐,退贓金額曝光,里皮被提起

20年,維持原判!李鐵二審結果出爐,退贓金額曝光,里皮被提起

體育有點水
2025-04-30 11:16:52
深度科普:解讀薛定諤的貓,觀測真的會影響貓的生死嗎?

深度科普:解讀薛定諤的貓,觀測真的會影響貓的生死嗎?

宇宙時空
2025-05-31 17:54:50
5歲小天賜被送寄宿學校后續,全家從山東搬廣西定居,眼神都變了

5歲小天賜被送寄宿學校后續,全家從山東搬廣西定居,眼神都變了

趣文說娛
2025-05-30 10:49:10
17歲的樸槿惠海邊游泳被發現小腹隆起,如今73歲青春已不再有!

17歲的樸槿惠海邊游泳被發現小腹隆起,如今73歲青春已不再有!

小嵩
2025-05-30 09:47:48
指揮家鄭小瑛天天吃剩飯,95歲仍精神矍鑠:剩飯真不影響健康?

指揮家鄭小瑛天天吃剩飯,95歲仍精神矍鑠:剩飯真不影響健康?

未曾青梅
2025-06-01 16:32:56
全面斷供開始,40艘巨輪開往中國,美國人害怕的事情還是來了

全面斷供開始,40艘巨輪開往中國,美國人害怕的事情還是來了

揚子的故事屋
2025-04-20 17:19:10
中國迎來了6條好消息,美國做不到的事,中國做到了

中國迎來了6條好消息,美國做不到的事,中國做到了

志宏教授
2025-06-01 13:45:57
中美經濟:美或下半年降息,國內消費有望修復

中美經濟:美或下半年降息,國內消費有望修復

和訊網
2025-06-01 08:00:10
淮安0-1遭絕殺,南通4-0,“蘇超”最新積分榜:南通3連勝領跑!

淮安0-1遭絕殺,南通4-0,“蘇超”最新積分榜:南通3連勝領跑!

小彭美識
2025-06-01 17:42:28
香港查獲25噸走私銻錠!能幫美國制造上萬枚導彈,誰是背后保護傘

香港查獲25噸走私銻錠!能幫美國制造上萬枚導彈,誰是背后保護傘

說宇宙
2025-05-31 08:50:03
43歲賈玲快瘦脫相了,獨掌10億公司,網友:她越來越颯了

43歲賈玲快瘦脫相了,獨掌10億公司,網友:她越來越颯了

周沖的影像聲色
2025-05-31 23:31:42
美預言家朱迪再爆猛料:美日中命運已定,此島將首遭災

美預言家朱迪再爆猛料:美日中命運已定,此島將首遭災

心靈短笛
2025-05-12 10:05:25
事發黃埔大橋!街坊:為自己的行為買單

事發黃埔大橋!街坊:為自己的行為買單

男女那點事兒兒
2025-06-01 17:33:01
福建8歲男童失蹤近1個月,當地政府:搜尋工作還在繼續

福建8歲男童失蹤近1個月,當地政府:搜尋工作還在繼續

現代快報
2025-06-01 13:54:21
某中國球迷穿歐文球衣登頂珠峰 本尊回應:感謝 這可真是挑戰

某中國球迷穿歐文球衣登頂珠峰 本尊回應:感謝 這可真是挑戰

直播吧
2025-06-01 09:23:21
突發!聯邦特工深夜掃蕩洛杉磯華人區,逮捕了36名來自中國的非法移民

突發!聯邦特工深夜掃蕩洛杉磯華人區,逮捕了36名來自中國的非法移民

大洛杉磯LA
2025-06-01 00:12:38
它是中國最神秘的女裝品牌,在網上幾乎看不到宣傳

它是中國最神秘的女裝品牌,在網上幾乎看不到宣傳

流蘇晚晴
2025-05-22 18:29:16
2025-06-01 19:47:00
程序員古耕 incentive-icons
程序員古耕
程序員、網文作家、自媒體人
533文章數 362關注度
往期回顧 全部

科技要聞

熱搜!雷軍疑回應余承東

頭條要聞

剛走一天就遭白宮"背刺" 馬斯克:很失望

頭條要聞

剛走一天就遭白宮"背刺" 馬斯克:很失望

體育要聞

一邊倒的歐冠決賽,青春無敵的新科冠軍

娛樂要聞

張若昀夫婦國外遛娃 男方推平價兒童車

財經要聞

油價繼續下跌?歐佩克宣布將再度增產

汽車要聞

零跑汽車5月交付量達45,067臺 穩居新勢力前三

態度原創

藝術
旅游
時尚
公開課
軍事航空

藝術要聞

故宮珍藏的墨跡《十七帖》,比拓本更精良,這才是地道的魏晉寫法

旅游要聞

熱聞|清明假期將至,熱門目的地有哪些?

今年夏天最火的10組搭配,都在這篇啦!

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

美防長在香會大肆渲染中國威脅 中方回應

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 静宁县| 太仓市| 惠安县| 尚志市| 元氏县| 麦盖提县| 河北区| 鄂伦春自治旗| 牙克石市| 乌拉特后旗| 明溪县| 浦江县| 商河县| 福清市| 安图县| 永登县| 盐源县| 怀化市| 淅川县| 太仓市| 丰原市| 河东区| 荔波县| 高陵县| 永城市| 收藏| 师宗县| 新野县| 广平县| 长葛市| 灯塔市| 双柏县| 滨州市| 浏阳市| 繁昌县| 吉隆县| 南安市| 罗甸县| 乳源| 南乐县| 平凉市|