关于在网络中如何收发xml格式流的一种C#程序方法
来源:互联网 发布:蒋方舟写作水平知乎 编辑:程序博客网 时间:2024/06/08 13:16
初学C#感觉知识欠缺,就用博客的形式将一些知识点保存下来,便于以后查阅,有错误望指正.
关于如何通过在网络中发送xml文件流,每种编程语言都有自己的实现方法,而且方法还不止一种。正好最近在用C#写一个简单的小型数据存取服务器,用到了这个。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<common>
<project_id>01</project_id>
<gateway_id>01</gateway_id>
<type>notify</type>
</common>
<heart_beat operation="notify"/>
</root>
首先,这个文件是由下位机发送过来的,需要将里面各个元素的值保存的类中;
这里先定义三个 类 public class common_class public class heart_breat_class public class recvFromClient
{ public string project_id; { [xmlAttribute("operation")] { public common_class common;
public string gateway_id; public string operation; public heart_breat_class heart_breat;
public string type; public heart_breat_class() public recvFromClient()
public common_class() { operation="";} { common = new common_class();
{project_id="";gateway_id="";type="";} heart_breat = new heart_breat_class();}
这里肯定要用到XmlSerializer类来序列化xml文件,,忘了,,要声明recvFromClient可以序列化
XmlSerializer heart_beat_xml = new XmlSerializer(typeof(recvFromClient));
recvFromClient recv = new recvFromClient();
recv = (recvFromClient)heart_beat_xml.Deserialize(ms);
//这里ms是从网络中的读取到到xml文件存储内存流的一个实例
经过一个反序列化的过程,xml文件元素的值就存储到了相应类的成员中;
<?xml version="1.0" encoding="utf-8"?>
<root>
<common>
<project_id />
<pateway_id />
<type>heart_result</type>
</common>
<id_validate operation="heart_result">
<heart_result>0000</heart_result>
</id_validate>
</root>
上位机要发送这样一个文件给下位机作为成功接收 到网络心跳包的回应。
这里根元素有两个子元素,我们定义两个类;common类还用上面的类,
在定义一个 public class id_validate_classs { [Serializable]
[xmlAttribute("operation")] [XmlRoot("root")]
public string operation ; public class heartBeatToClient
public string heart_result; { public common_class common;
public id_validate_class() public id_validate_class id_validate;
{operation = "": heart_result="";} public heartBeatToClient()
} {operation = "";heart_result = "";}
XmlSerializer heart_to_client = new XmlSerializer(typeof(heartBeatToClient));
heartBeatToClient myHeartBeatToClient = new heartBeatToClient();
myHeartBeatToClient.common.project_id = myHeartBeatFromClient.common.project_id;
myHeartBeatToClient.common.gateway_id = myHeartBeatFromClient.common.gateway_id;
myHeartBeatToClient.common.type ="heart_result";
myHeartBeatToClient.id_validate.operation = "heart_result";
myHeartBeatToClient.id_validate.heart_result = "0000";
string strToSend;
strToSend = XMLSerialClassToString(myHeartBeatToClient);//用流发送的时候不接受类作为参数的.所以需要将这个类转变为流
byte[] strToSd = Encoding.UTF8.GetBytes(strToSend);
networkStream.Write(strToSd, 0, strToSd.Length); //通过netwrokSteam绑定的套接字发送出去;
string XMLSerialClassToString(heartBeatToClient t )
{
XmlSerializerNamespaces xml=new XmlSerializerNamespaces();
xml.add("","");//命名空间和浅醉我们都不需要,这里指定为空,不要编译器会默认加上命名空间和前缀
MemorySream ms =new MemoryStream();
StreamWriter sw=new StreamWriter(ms,Encoding.UTF8);
XmlSerializer xs=new XmlSerlialliaer(typeof(heartBeatToClient));
xs.Serialier(sw,t,xml);
return Encoding.UTF8.Getstring(ms.toArray());
}
- 关于在网络中如何收发xml格式流的一种C#程序方法
- 在串口中收发浮点型数据的一种方法
- 一种在ORACLE中解析XML的方法
- 如何在网络中使用光纤收发器?
- 在c#中使用opencv的一种方法
- C++中在程序中重启自己的一种方法
- 在iphone程序中实现截屏的一种方法
- 如何利用C#在XML 中添加 节点得到如下的格式 插3根鸡毛了
- 关于如何在C#程序中访问windows用户的密码:
- 关于在table中设置tr的格式的方法
- 关于如何制作Rss的一种方法!
- android中RadioButton中的自带的圆圈如何去掉,两种方法,一种.xml、一种代码中
- 在LUA中收发网络数据
- 如何在C#中实现两个程序的通信?
- 如何在C#中测试程序运行的时间
- 在C#中如何监视自己打开的其他程序
- Java中常用的一种时间格式的转换方法
- 在C#中为DATAGRID控件增加一个删除按钮的一种方法
- lua实现全排列
- Perl读写数据库数据
- java自学视频
- c实现vector
- android alarm类型
- 关于在网络中如何收发xml格式流的一种C#程序方法
- gradient descent
- Unix Family Tree
- C# 多线程编程 ThreadStart ParameterizedThreadStart
- Java集合排序及java集合类详解:Set
- (转)C++中两个类交叉定义或递归定义的解决办法
- WPF中实现先登录后启动主程序的方法
- 如何清晰地思考:近一年来业余阅读的关于思维方面的知识结构整理(附大幅思维导图)
- unity 优化心得 (2D游戏)