如何通过UDP连接C#发送泛型?

时间:2012-11-27 09:02:12

标签: c# udp byte converter send

我想知道有没有办法发送某种泛型,例如需要将List <float> floatValues = new List<float>()发送到udp客户端。我不知道该怎么做,任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以使用某些序列化工具(例如XmlSerializerBinaryFormatterDataContractSerializer)序列化floatValues,然后将其反序列化。

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

答案 1 :(得分: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);
相关问题