成人深夜视频网站|日韩高清无码久久|中文a√在线天堂|亚洲黄网站在线看|欧美视频 第二页|日本 久草 天堂|高潮无遮挡黄视频|久久一级内射精品|国产操逼一级视频|五月天婷婷色AV

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

相同的結(jié)構(gòu)體,服務(wù)端和客戶端字節(jié)長度差8個(gè)字節(jié),咋回事呢?

0
分享至

代碼報(bào)了個(gè)錯(cuò):“byte array size is smaller than the size of the structur”,意思就是byte數(shù)組的大小小于結(jié)構(gòu)體的大小,這個(gè)錯(cuò)報(bào)出來的原因是我代碼中有個(gè)邏輯,需要將byte數(shù)組轉(zhuǎn)換成結(jié)構(gòu)體,但很顯然,我沒有轉(zhuǎn)換成功,這是咋回事呢?



這個(gè)錯(cuò)報(bào)得我莫名其妙的,找了一個(gè)小時(shí)左右都沒找到問題出在哪,但是最后發(fā)現(xiàn)問題的時(shí)候,我甚至有些無語。在說清楚問題到底出在哪之前,我們得先了解下代碼的業(yè)務(wù)邏輯,然后您就知道為什么開始我覺得莫名其妙了!

代碼的業(yè)務(wù)邏輯是這樣的,我們的業(yè)務(wù)中有一個(gè)服務(wù)端和很多個(gè)客戶端,客戶端會(huì)定期給服務(wù)端發(fā)送消息,消息是以結(jié)構(gòu)體的形式發(fā)送的,當(dāng)然,在發(fā)送消息的時(shí)候,需要將結(jié)構(gòu)體轉(zhuǎn)換成byte數(shù)組。

為了確保發(fā)送消息的一致性,我特地封裝了一個(gè)專門用來處理消息的函數(shù)庫,這樣就能確保每個(gè)客戶端在發(fā)送和接收消息的時(shí)候不會(huì)出現(xiàn)任何差錯(cuò)。

但是,差錯(cuò)偏偏就出現(xiàn)了!在某個(gè)客戶端上就出現(xiàn)了文章開頭的那個(gè)錯(cuò)!

經(jīng)過調(diào)試,我發(fā)現(xiàn)所有客戶端發(fā)送的消息內(nèi)容都是一樣的,并沒有任何區(qū)別。

結(jié)構(gòu)體屬于基本數(shù)據(jù)類型,因此在定義的時(shí)候,長度就已經(jīng)確定了,我在服務(wù)端進(jìn)行調(diào)試,發(fā)現(xiàn)結(jié)構(gòu)體的長度為288,但是,服務(wù)端接收到的byte數(shù)組長度卻只有280,如此一來,在將byte轉(zhuǎn)換成結(jié)構(gòu)體的時(shí)候,因?yàn)殚L度不一致,導(dǎo)致了轉(zhuǎn)換失敗。

前面說了,我專門封裝了一個(gè)消息處理的庫,服務(wù)端和客戶端使用的是庫里面同一個(gè)結(jié)構(gòu)體,不可能會(huì)出現(xiàn)兩邊長度不一致的情況。

事出反常必有妖!

服務(wù)端是同一個(gè)服務(wù)端,因此問題只可能出現(xiàn)在客戶端的代碼上!因?yàn)槲覀兊目蛻舳擞胁煌姹?,每個(gè)版本有單獨(dú)的代碼,而代碼只有略微差別。

我拿了不同版本的客戶端代碼進(jìn)行調(diào)試,詭異的是,出問題的那個(gè)客戶端在發(fā)送消息時(shí),結(jié)構(gòu)體的長度偏偏就是280,而其他客戶端在發(fā)送消息時(shí),結(jié)構(gòu)體長度卻是288!

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

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

這個(gè)結(jié)構(gòu)體的內(nèi)容很簡單,里面是由一個(gè)Int64字段+兩個(gè)Int32字段+一個(gè)指針+一個(gè)指定了長度的字符串字段組成,其中,字符串的長度被指定為255。



公司代碼是用C#編寫的,在C#中,正常情況下,Int64所占字節(jié)數(shù)為8位,Int32所占字節(jié)數(shù)為4位,指針?biāo)甲止?jié)數(shù)為8位。

而指針類型在32位環(huán)境和64位環(huán)境里面所占用的字節(jié)是不一樣的,在32位環(huán)境里占4個(gè)字節(jié),而在64位環(huán)境里則占8個(gè)字節(jié)!

結(jié)語

因此,最終真相大白!于是我去除勾選“首選32位”,再次編譯,發(fā)現(xiàn)結(jié)構(gòu)體的長度變成了288!

說到這里,肯定有人關(guān)心為什么項(xiàng)目被勾選了“首選32位”,因?yàn)槲乙恢睕]有將代碼上傳代碼庫,所以具體是怎么發(fā)生的,其實(shí)我也不知道,也許是IDE默認(rèn)就給勾上了,但是因?yàn)橐恢睕]測到這,所以問題一直沒被發(fā)現(xiàn)。

聲明:個(gè)人原創(chuàng),僅供參考

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

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.

相關(guān)推薦
熱點(diǎn)推薦
奢華放縱的白馬會(huì)所:性交易猖獗,富婆揮金如土,終究一敗涂地

奢華放縱的白馬會(huì)所:性交易猖獗,富婆揮金如土,終究一敗涂地

小邵說劇
2025-08-19 10:51:14
TA:霍伊倫認(rèn)為自己強(qiáng)于謝什科,但曼聯(lián)高層認(rèn)為他是過去式了;卡拉格:若不是阿莫林長得帥,早下課了

TA:霍伊倫認(rèn)為自己強(qiáng)于謝什科,但曼聯(lián)高層認(rèn)為他是過去式了;卡拉格:若不是阿莫林長得帥,早下課了

MUREDS
2025-09-02 23:11:25
63歲大媽相親時(shí)提過性生活要求,老頭聽聞后臉紅“明天試試”

63歲大媽相親時(shí)提過性生活要求,老頭聽聞后臉紅“明天試試”

夜闌故事集
2025-09-01 17:40:02
塞爾維亞總統(tǒng)向普京抱怨:烏克蘭戰(zhàn)爭讓我們很難辦

塞爾維亞總統(tǒng)向普京抱怨:烏克蘭戰(zhàn)爭讓我們很難辦

桂系007
2025-09-02 23:32:40
一路走好!九月第1天就傳來3位名人死訊,最小僅35歲,最大93歲

一路走好!九月第1天就傳來3位名人死訊,最小僅35歲,最大93歲

以茶帶書
2025-09-01 20:17:17
疑似蘋果 iPhone 17 Pro Max 量產(chǎn)機(jī)泄露,后蓋設(shè)計(jì)大變

疑似蘋果 iPhone 17 Pro Max 量產(chǎn)機(jī)泄露,后蓋設(shè)計(jì)大變

IT之家
2025-09-02 20:08:05
黃種人各位置天花板球員是誰?河村落選,姚明領(lǐng)銜4位華人上榜!

黃種人各位置天花板球員是誰?河村落選,姚明領(lǐng)銜4位華人上榜!

你的籃球頻道
2025-09-02 14:42:38
董卿父親董善祥:我這輩子最后悔的事,就是讓寶貝女兒嫁給密春雷

董卿父親董善祥:我這輩子最后悔的事,就是讓寶貝女兒嫁給密春雷

孫镴北漂拍客
2025-08-30 23:51:41
泡沫破了!南京一樓盤單價(jià)從3萬跌至1.2萬,房東生怕跑得比別人慢

泡沫破了!南京一樓盤單價(jià)從3萬跌至1.2萬,房東生怕跑得比別人慢

火山詩話
2025-09-01 07:09:29
我國將誕生第5座直轄市?南京、成都基本無緣,4城呼聲最高

我國將誕生第5座直轄市?南京、成都基本無緣,4城呼聲最高

紀(jì)中百大事
2025-08-28 19:37:25
為什么現(xiàn)在不用擔(dān)心股市大幅下跌

為什么現(xiàn)在不用擔(dān)心股市大幅下跌

鵬程蛇口
2025-09-02 21:25:24
判了,無期!斂財(cái)3.8億,偽裝了7年的勵(lì)志網(wǎng)紅,最終還是露餡了

判了,無期!斂財(cái)3.8億,偽裝了7年的勵(lì)志網(wǎng)紅,最終還是露餡了

暮云晨記
2025-08-08 09:10:47
四川未來三天降雨天氣頻繁 巴中達(dá)州等地局部有大雨到暴雨

四川未來三天降雨天氣頻繁 巴中達(dá)州等地局部有大雨到暴雨

北青網(wǎng)-北京青年報(bào)
2025-09-02 16:55:03
國安慘敗非自身原因,但凡馬寧,傅明,提江上一個(gè),都不會(huì)輸六個(gè)

國安慘敗非自身原因,但凡馬寧,傅明,提江上一個(gè),都不會(huì)輸六個(gè)

體壇風(fēng)之子
2025-09-02 04:30:03
廣州交警通報(bào)一起交通事故:6人受傷,系司機(jī)疲勞駕駛引發(fā)

廣州交警通報(bào)一起交通事故:6人受傷,系司機(jī)疲勞駕駛引發(fā)

界面新聞
2025-09-02 22:46:54
不知道若是日本人看了這張照片,是不是會(huì)羞愧的臉都沒地方藏?

不知道若是日本人看了這張照片,是不是會(huì)羞愧的臉都沒地方藏?

深度報(bào)
2025-08-04 22:26:35
男子資助19歲貧困女大學(xué)生,女子讀博后前來感謝,他打開門后愣住

男子資助19歲貧困女大學(xué)生,女子讀博后前來感謝,他打開門后愣住

溫情郵局
2025-08-06 14:18:40
中國5大長壽食物,紅薯排第三,第一許多人想不到,中老年要常吃

中國5大長壽食物,紅薯排第三,第一許多人想不到,中老年要常吃

墜入二次元的海洋
2025-08-28 05:29:24
哈爾濱“80后”區(qū)長擬任新職!

哈爾濱“80后”區(qū)長擬任新職!

喜哈生活
2025-09-02 21:34:59
隨著辛納3-0橫掃布勃利克,美網(wǎng)男單8強(qiáng)出爐,1/4對(duì)陣如下

隨著辛納3-0橫掃布勃利克,美網(wǎng)男單8強(qiáng)出爐,1/4對(duì)陣如下

薇說體育
2025-09-02 11:04:35
2025-09-03 01:27:00
程序員古耕 incentive-icons
程序員古耕
程序員、網(wǎng)文作家、自媒體人
563文章數(shù) 380關(guān)注度
往期回顧 全部

科技要聞

宇樹科技稱將在四季度提交IPO申請(qǐng)

頭條要聞

石破茂態(tài)度180度大轉(zhuǎn)彎 強(qiáng)硬表態(tài)將留任后又突然改口

頭條要聞

石破茂態(tài)度180度大轉(zhuǎn)彎 強(qiáng)硬表態(tài)將留任后又突然改口

體育要聞

尤文歐冠大名單:戴維、熱格羅瓦、奧蓬達(dá)在列,米利克缺席

娛樂要聞

“廚神對(duì)決!”誰做的菜好吃?

財(cái)經(jīng)要聞

黃金破"次元" 年輕人熬夜買"金谷子"

汽車要聞

12分鐘大訂破3000 "配齊"的全新嵐圖知音滿血華為

態(tài)度原創(chuàng)

家居
本地
旅游
時(shí)尚
公開課

家居要聞

簡約清新 暖色宜居小家

本地新聞

換個(gè)城市過夏天 | “中式美學(xué)”打開夏日濰坊

旅游要聞

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

三種適合9月的風(fēng)格,好漂亮

公開課

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

無障礙瀏覽 進(jìn)入關(guān)懷版