付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、袆文件传输之发送端 袅1.编程要点 肂本程序是基 于 UDP 来实现 文件传输的, 主要用到 Udpclient 类以及 XmlSerializer 类 来 传 输 文 件 和 序 列 化 对 象 。 其 中 XmlSerializer 类 位 于 System.Xml.Serialization 命名空间中,一下简单介绍该命名空间。 肀 System.Xml.Serialization 命名空间包含了用于将对象序列化为 XML 格式文档 或流的类,它的中心类是 XmlSerializer 类,它的功能是将对象序列化到 XML 文 档中和从 XML 文档中反序列化对象。 芆下面简要介绍序列化对
2、象以及反序列化对象的步骤。 (1) (2)薆序列化对象的步骤: 肄用 XmlSerializer 的构造函数创建类的实例(使用要序列化的对象的类型) 。 膈创建要序列化的对象的实例以及创建对象(例如Stream, TextWriter或 XmlWriter ),以将文件写入文档或流中。 罿调用Serialize方法将对象转换为XML文档。 ( 3 ) (4)莆反序列化对象的步骤: 袁用要被反序列化的对象的类型构造一个XmlSerializer。 薁创建读取文档或流的合适的对象 (仍然为Stream, TextWriter或XmlWriter)。 莈调用Deserialize方法反序列化对象。
3、肆将结果为对象转换为原始对象类型。 羂以下介绍 XmlSerializer 类的构造函数和方法。 虿public XmlSerializer (Type type):将指定类型的对象序列化为 XML文档或 反之。其中参数 type 表示此 XmlSerializer 可序列化的对象的类型。 袈public void Serializer( Stream stream object o): 将指定的 Stream序列化指定 的Object并将XML文党写入文件。其中参数stream表示用于编写XML文档的 Stream;参数o表示将要序列化的Object。 薃注意:Serialize方法将对象的
4、公共字段和读/写属性转换为XML ,它不转换方 法、索引器、私有字段或只读属性。若要序列化某对象的所有字段和属性(包括 公共和私有两种),请使用 BinaryFormatter。 肄public object Deserialize (Stream stream :将指定 Stream包含的 XML 文档反 序列化。其中参数stream是要包含要反序列化的XML文档的Stream。该方法返 回正被反序列化的对象。 肁文件传输程序发送端的实现思路是:创建用于存储发送文件的文件类型和大 小的类FileDetails。根据接收端的IP地址获取其计算机名,再结合端口号创建 UdpCIient实例udp
5、CIient,然后用FileStream对象fs打开要发送的文件,并检查 其长度,如果长度超过8k字节这个最大允许值,则提示,并关闭udpClient以及 fs;否则,就用SendFileInfo方法发送文件信息,如果该方法返回值为真,则调 用Thread.Sleep(方法等待2秒钟后,再用SendFile方法发送文件本身。其中 SendFileInfo方法填充FileDetails对象的字段,然后用一个 XmlSerializer对象将 该对象序列化为一个Memorystream,随后它被读入到一个字节数组钟,并传递 给udpClient对象的Send方法中,将文件信息发送给接受端。另外Se
6、ndFile方法 将FileStream中的文件内容读到一个字节数组中,然后将它发送给接收端。 芇2.程序实现 芃( 1)创建“文件传输之发送端”项目。 袁创建名为“文件传输之发送端”的windows 应用程序。 膀( 2)添加控件。 腿添加三个Label控件到窗体上。将他们的Text属性依次设置为“接收端IP:” “端口:”、“请选择要发送的文件: ”。 薅添加三个TextBox控件到窗体上。禾I用属性窗口将它们的Name属性依次 改“ txtIP ”、“ txtPort ”、“ txtLocation ”并将 txtLocation 控件的 Read On ly 设为 True。 莅添加两
7、个Button控件。将它们的Text属性分别设置为“发送”、“浏览”。 螀添加一个 OpenFileDialog 控件到 Form1 窗体上,再添加一个 ListBox 控件 到 Form1 窗 体 上 。 使 用 属 性 窗 口 设 置 ListBox 控 件 的 属 性 : ScrollAlwaysVisible=True 。最后将窗体命名为“文件传输之发送端” 。 薈文件传输之接收端 1. 2. 芆编程要点 蒆实现思路:由于要将来自发送端的文件信息反序列化为一个FileDetails 对象, 所以定义接收端仍需要定义类FileDetails。根据端口号创建UdpClient实例 udpC
8、Iient,然后创建线程threadReceive该线程中用了事件委托ReceiveMessages 其中ReceiveMessages方法用于获取文件信息以及接收文件内容。其中获取文件 信息用GetFileDetails方法实现,它首先调用 UdpCIient对象的Receive方法,从 发送端接收发送来的已经序列化了的文件信息流,随后用一个 XmISeriaIizer 对 象将该流反序列化,得到一个 FileDetails对象。接收文件内容用 ReceiveFile方 法实现, 该方法实现从发送端获取文件。 并用另存为对话框的形式, 让用户输入 保存文件名,其中文件的扩展名由FileDet
9、ails对象获得,并输入文件筛选过滤器 中。然后保存文件。 3. 4. 膃程序实现 (1) (2)肇创建“文件传输之接收端”项目。 肆创建名为“文件传输之接收端”的 windows 应用程序。 (3) (4) 膃添加控件。 芁添加两个Label控件到窗体上。将他们的Text属性依次设置为“发送端IP:、 螁添加三个TextBox控件到窗体上。禾I用属性窗口将它们的Name属性依次 改“ txtlP” “ txtPort ” 并将 txtIP 控件的 Read On ly 设为 True。 螇添加两个Button控件。将它们的Text属性分别设置为“开始”、“停止”。 添加一个 SaveFile
10、Dialog 控件到 Form1 窗体上,再添加一个 ListBox 控件 到 Form1 窗体上。 使用属性窗口设置 ListBox 控件的属性: ScrollAlwaysVisible = True。最后将窗体命名为“文件传输之接受端”。 仅供个人用于学习、研究;不得用于商业用途 For personal use only in study and research; not for commercial use. Nur f u r den pers?nlichen f u r Studien, Forschung, zu kommerziellen Zwecken verwendet werden. Pour l e tude et la recherche uniquement
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省南京市联合体2025-2026学年上学期期末九年级物理试卷(含答案)
- 黑龙江省龙东十校联盟2025-2026学年高一(上)期末物理试卷(含答案)
- 广东省深圳市南山区2025-2026学年上学期七年级1月期末数学试题(含答案)
- 2025-2026学年安徽省合肥45中八年级上册(数学HK)期末试卷(无答案)
- 微观经济学试题及答案
- 科幻文学溯源:从舶来品到本土化
- 2022-2023年人教版七年级数学上册期末测试卷及参考答案
- 边检业务培训课件
- 初升高自主招生研讨:初升高自主招生研讨-方程与不等式(答案)
- 书让我陶醉作文
- 波形护栏工程施工组织设计方案
- 非静脉曲张性上消化道出血管理指南解读课件
- 气体灭火系统维护与保养方案
- GB/T 10922-202555°非密封管螺纹量规
- ESD护理教学查房
- 内窥镜护理不良事件分析与防范措施
- 2025年《电信业务投诉处理》知识考试题库及答案解析
- 术后恶心呕吐(PONV)诊疗指南解读
- 82-2手榴弹使用课件
- 道路清扫保洁服务投标方案
- 2025年省太原市教师职称考试(公共科目)仿真试题及答案
评论
0/150
提交评论