国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

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

0
分享至

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

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

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

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

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

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

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

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

事出反常必有妖!

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

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

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

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

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

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

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

結(jié)語

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

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

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

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(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)推薦
熱點推薦
比煙草電網(wǎng)還低調(diào)的5個央國企:幾乎不社招,但一進就是人生贏家

比煙草電網(wǎng)還低調(diào)的5個央國企:幾乎不社招,但一進就是人生贏家

生活新鮮市
2026-02-26 05:03:46
親人去世,先打120還是殯儀館?記住這個順序,少跑90%彎路

親人去世,先打120還是殯儀館?記住這個順序,少跑90%彎路

白淺娛樂聊
2026-02-25 19:00:57
打伊朗前,美國找到中國,特朗普知道:他錯一步,中國就不戰(zhàn)而勝

打伊朗前,美國找到中國,特朗普知道:他錯一步,中國就不戰(zhàn)而勝

議紀史
2026-02-28 21:50:03
人品好!張本美和:我解釋后王曼昱同意醫(yī)療暫停 賽后問我沒問題吧

人品好!張本美和:我解釋后王曼昱同意醫(yī)療暫停 賽后問我沒問題吧

818體育
2026-03-01 13:27:01
黎筍之子黎堅誠坦言:父親選擇同中國開戰(zhàn),是其畢生最大的失策

黎筍之子黎堅誠坦言:父親選擇同中國開戰(zhàn),是其畢生最大的失策

磊子講史
2025-12-24 11:04:05
中東航班深夜返航 有旅客中途暴哭:安全最重要

中東航班深夜返航 有旅客中途暴哭:安全最重要

看看新聞Knews
2026-03-01 10:35:03
視頻丨迪拜國際機場航站樓遭到襲擊

視頻丨迪拜國際機場航站樓遭到襲擊

環(huán)球網(wǎng)資訊
2026-03-01 07:08:57
伊朗殺瘋了!強盜進瓷器店,把科威特、迪拜、巴林一頓狂轟濫炸

伊朗殺瘋了!強盜進瓷器店,把科威特、迪拜、巴林一頓狂轟濫炸

我心縱橫天地間
2026-03-01 19:56:37
高市對華改口,被民眾大罵不知羞恥,中國不被迷惑,再次追加制裁

高市對華改口,被民眾大罵不知羞恥,中國不被迷惑,再次追加制裁

議紀史
2026-02-28 17:05:03
美以空襲伊朗,阿拉伯國家聯(lián)盟發(fā)聲:“阿拉伯-以色列沖突升級為全面地區(qū)戰(zhàn)爭的時刻”

美以空襲伊朗,阿拉伯國家聯(lián)盟發(fā)聲:“阿拉伯-以色列沖突升級為全面地區(qū)戰(zhàn)爭的時刻”

環(huán)球網(wǎng)資訊
2026-03-01 11:00:18
孫志浩肝癌晚期,將50億資產(chǎn)里的豪宅與股份盡數(shù)轉(zhuǎn)至女兒梧桐妹

孫志浩肝癌晚期,將50億資產(chǎn)里的豪宅與股份盡數(shù)轉(zhuǎn)至女兒梧桐妹

陳意小可愛
2026-03-01 10:33:40
美國軍力全球第一,敢打任何國家?俄潑冷水:這4國你敢打誰?

美國軍力全球第一,敢打任何國家?俄潑冷水:這4國你敢打誰?

近史談
2026-01-19 10:09:51
氫彈威力上不封頂,但核武器有個不成文的規(guī)定:扔不到對方頭上去

氫彈威力上不封頂,但核武器有個不成文的規(guī)定:扔不到對方頭上去

沒有偏旁的常慶
2026-03-01 07:00:11
迪拜國際機場遭襲

迪拜國際機場遭襲

財聯(lián)社
2026-03-01 05:34:14
我62歲,娶45歲女舞伴為妻,新婚夜前妻敲門:今晚別同房

我62歲,娶45歲女舞伴為妻,新婚夜前妻敲門:今晚別同房

小月故事
2026-02-10 11:16:34
讓領(lǐng)導(dǎo)先走?以色列徹底改變了戰(zhàn)爭習慣,自此食肉者得三思而后行

讓領(lǐng)導(dǎo)先走?以色列徹底改變了戰(zhàn)爭習慣,自此食肉者得三思而后行

尋途
2025-08-22 20:22:00
1999年,遲浩田設(shè)局抓捕一位少將,對方被捕后挑釁:我爸知道嗎?

1999年,遲浩田設(shè)局抓捕一位少將,對方被捕后挑釁:我爸知道嗎?

嘆為觀止易
2026-02-20 13:32:06
推翻阿薩德一年后,敘利亞人后悔了嗎?看看百年前的新疆就懂了

推翻阿薩德一年后,敘利亞人后悔了嗎?看看百年前的新疆就懂了

知識TNT
2026-02-28 12:25:03
伊朗發(fā)動大規(guī)模襲擊:已襲擊27個美軍基地和以軍總司令部等地;伊方公布導(dǎo)彈擊中以軍總參謀部圖

伊朗發(fā)動大規(guī)模襲擊:已襲擊27個美軍基地和以軍總司令部等地;伊方公布導(dǎo)彈擊中以軍總參謀部圖

極目新聞
2026-03-01 13:09:32
韓旭18+9+6正負值+20全隊最高,山貓加時惜敗無緣總冠軍

韓旭18+9+6正負值+20全隊最高,山貓加時惜敗無緣總冠軍

懂球帝
2026-03-01 16:32:48
2026-03-01 20:36:49
程序員古耕 incentive-icons
程序員古耕
程序員、網(wǎng)文作家、自媒體人
599文章數(shù) 389關(guān)注度
往期回顧 全部

科技要聞

小米超跑概念車全球首秀!殺入頂豪俱樂部

頭條要聞

中國游客遭遇航班熔斷 轉(zhuǎn)機四趟耗時48小時回國

頭條要聞

中國游客遭遇航班熔斷 轉(zhuǎn)機四趟耗時48小時回國

體育要聞

火箭輸給熱火:烏度卡又輸斯波教練

娛樂要聞

《江山為聘》:吳謹言陳哲遠燃炸朝堂

財經(jīng)要聞

中東局勢升級 如何影響A股、黃金和原油

汽車要聞

理想汽車2月交付26421輛 歷史累計交付超159萬輛

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

時尚
房產(chǎn)
旅游
數(shù)碼
親子

普通人穿衣不需要太復(fù)雜!顏色恰當、搭配和諧,高級又耐看

房產(chǎn)要聞

濱江九小也來了!集齊海僑北+哈羅、寰島...江東教育要炸了!

旅游要聞

膠香燈影傳非遺 文旅新春啟新程——東阿文旅與非遺深度融合的新春實踐

數(shù)碼要聞

小米首款追蹤器!小米Tag海外正式發(fā)布 兼容iOS 120元起

親子要聞

春日敏感肌自救指南,你get了嗎?

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