2012-11-27 30 views
-1

我想知道是否有一种方法可以发送某种仿制药,例如List <float> floatValues = new List<float>()需要发送到udp客户端。我不知道该怎么做,任何帮助将不胜感激!如何通过UDP连接C#发送泛型?

回答

1

你可以使用一些序列化工具(如XmlSerializerBinaryFormatterDataContractSerializer)序列floatValues和反序列化相比回来。

或者您可以创建自己的“应用程序级协议”并将其放入流类型名称和序列化程序类型,并在反序列化过程中使用此信息。

+0

实际上,我必须将泛型转换为小端,然后发送它们,然后我需要做一些事情克与列表。 –

+0

你可以序列化整个列表并发送它。我认为当你有不同的平台时,小端和大端有意义:例如,使用.NET序列化和使用C++反序列化。 –

+0

你有什么例子吗? –

1

你想要做的是被称为serialization/deserialization

在计算机科学中,在数据存储和传输,系列化的背景是什么,是将数据结构或对象状态转变为格式的过程,可以存储(例如,在一个文件或内存缓冲区,或通过网络连接链路传输),并建立自己的序列化后在同一或另一台计算机环境“复活”

相反,我会建议使用之类的现有库之一XmlSerializerSoapFormatterBinaryFormatterDataContractSerializerDataContractJsonSerializerJavaScriptSerializerJson.NetServiceStackProtobuf.Net ........

在这里使用的示例JSON序列

//Sender 
string jsonString = new JavaScriptSerializer().Serialize(floatValues); 
byte[] bytesToSend = Encoding.UTF8.GetBytes(jsonString); 

//Receiver 
string receivedJson = Encoding.UTF8.GetString(bytesToSend); 
List<float> floatValues2 = new JavaScriptSerializer() 
             .Deserialize<List<float>>(receivedJson);