一個工作任務涉及到c#與c++系統間的udp通信,處理了蠻長時間沒有完成任務,但是期間接觸到不少小知識點。本人是初接觸c#,c++語言沒有接觸過。可能寫的東西都很小兒科,暫且記錄下來當工作日記把。
先解決本文的主題:c#中結構體與byte[]間相互轉換,以便幫助查閱到的人解決一下問題。在工作任務過程中,學習到了c#中結構體與byte[]間相互轉換。做的代碼實驗如下:
[] StrutsToBytesArray( size = [] bytes = IntPtr structPtr = Marshal.StructureToPtr(structObj, structPtr, Marshal.Copy(structPtr, bytes, BytesToStruts( size = (size > IntPtr structPtr = Marshal.Copy(bytes, obj = packindex; type; length; [] data; Main( Program p = udp_data sd = sd.packindex = sd.type = [] btmp = Encoding.UTF8.GetBytes( sd.data = sd.length = [] structToB = StrutsToBytesArray(sd); udp_data byteToStru = (udp_data)BytesToStruts(structToB, sd.GetType()); }
【運行結果】:
1
0
9
你好啊
這次的工作任務大概是我所處的用c#寫的Windows下的A系統,要向B系統發送消息,由B系統郵件。
遇到的困難是:B系統提供的API是c++寫的Linux下的文件,而我們的系統是c#寫的Windows下的代碼。API只包含頭文件與庫文件,沒有源碼也無法轉換成可以使用的dll文件。所以這個API作廢。
於是我們想采取一個迂回策略,將消息發到一個C系統,因為他們也有發郵件的服務要處理,由他們再把消息發到B系統來發郵件。C系統也提供了一個API,這次同樣是c++寫的Linux下的文件,但是