c 網路位元組序資料傳輸

2021-09-04 13:12:56 字數 2087 閱讀 4467

之前寫過一篇python的十六進製制資料傳遞與接收,介紹了網路位元組序等概念,這裡就不在贅述了,下面主要介紹下c#下怎麼進行網路位元組序的傳送與接收。

在python中使用到了struct結構體進行資料的封裝,這裡同樣也使用struct,關於c#的struct結構體簡單介紹如下:

比如採用udp協議,協議資料有 長度、裝置名稱、裝置ip、命令編號、訊息體5個字段組成

字段長度

裝置名稱

裝置ip

命令編號

訊息體長度

4位元組2位元組

2位元組1位元組

變長而訊息體又包含長度、命令編號和內容

字段長度

命令編號

內容長度

2位元組1位元組

變長這樣乙個訊息就包含了固定長度為9的訊息頭和可變長度的訊息體組成

經過分析之後開始建立訊息頭和訊息體的結構體

namespace struct_wly

}

關於訊息體可能有很多個,只有內容的長度是變化的,可能有1,3,20,50等長度,這就得建立不同長度的結構體,相同內容長度的訊息體可以使用同乙個結構體來封裝和接收,比如建立乙個25長度內容的結構體

namespace struct_wly

}

private static void send(ipendpoint ipend)

其中structhelper.stucttobyte方法是將結構體轉為位元組陣列,在後面將會給出

private static void send(ipendpoint ipend)

//位元組數組合並方法

public static byte getcontactbyte(byte bt, byte bt2)

private static void datareceived(xxudpeventargs args, xxudpbody udpbody)}}

public static class structhelper

//分配結構體大小的記憶體空間

intptr structptr = marshal.allochglobal(size);

//將byte陣列cpoy到分配好的記憶體空間內

marshal.copy(databuff_, 0, structptr, size);

//將記憶體空間轉換為目標結構體

t obj = (t)marshal.ptrtostructure(structptr, t);

//釋放記憶體空間

marshal.freehglobal(structptr);

return obj;

}/// /// 結構體轉byte陣列

///

/// 結構體

/// byte陣列

public static byte stucttobyte(object objstuct)

public static char getfixlengthchar(this string s, int length)

public static string getstring(this char cc)

public static string getstring(this char cc, bool istrimend)

else}}

結構體可以包含結構體以及結構體陣列,如下:

1.包含結構體

namespace struct_wly

}

2.包含結構體陣列

namespace struct_wly

}

private static void sendmsg());}

訪問我的達人課

訪問我的部落格 wang's blog

網路資料傳輸

網路資料傳輸 wcdma全名是widebandcdma,中文譯名為 寬頻分碼多工訪問 它可支援384kbps到2mbps不等的資料傳輸速率,在高速移動的狀態,可提供384kbps的傳輸速率,在低速或是室內環境下,則可提供高達2mbps的傳輸速率。而gsm系統目前只能傳送9.6kbps,固定線路mod...

Qt 網路資料傳輸

以前寫介面主要用qt做ui,底層的功能是呼叫別人提供的介面,分工比較明確,但要更好地實現跨平台,則盡量使用qt內部的介面 當然,也有很多比較強大的庫,例如libcurl qt5自帶的網路處理模組qtnetwork 主要通過qnetworkaccessmanager qnetworkrequest q...

網路程式設計之位元組序對跨平台資料傳輸的影響

關於位元組序對跨平台資料傳輸的作用。我分下面幾個方面整理了下,知識點應當算比較全了。一。從服務端傳送整數到客戶端為例,看看位元組序的應用。二。什麼是位元組序?三。什麼是網路位元組序 四。如何確定本機的大小端 一。從服務端傳送整數到客戶端為例,看看位元組序的應用。服務端 節選 傳送整數 呼叫 send...