基于TCP协议通信的文件传输系统之服务端_第1页
基于TCP协议通信的文件传输系统之服务端_第2页
基于TCP协议通信的文件传输系统之服务端_第3页
基于TCP协议通信的文件传输系统之服务端_第4页
基于TCP协议通信的文件传输系统之服务端_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于基于TCP通信协议的文件传输系统通信协议的文件传输系统综述:本次编程中,我们小组从零起点实现了对C#中的Winform窗体应用的创建,简单控件的使用,以及C#语言中的Thread类、FileStream类、Directory类、IPAddress类、Socket类等类的简单使用。我们小组的文件传输系统特点如下:1、基于TCP协议进行服务端和 客户端的连接,需提供服务端本机IP地址;2、多个客户端可连接同一服务器;3、服务端可主动选取客户端发送本地文件。程序目前的缺点如下:1、发送文件不能超过100KB,大数据不能分包发(还在解决中);2、客户端不能自动存入文件名和文件格式;。服务端界面如下

2、:IP为服务端本机IP,端口可自行设计,在启动服务按钮里,可实现从输入的IP和端口实例化一个套接字:socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);/本条语句用来实例化一个套接字IPAddress address = IPAddress.Parse(richTextBox2.Text.Trim();/ 获得文本框中的IP对象IPEndPoint endPoint = new IPEndPoint(address, int.Parse(richTextBox3.Te

3、xt.Trim();/ 创建包含IP和端口号的网络节点对象;上述三条语句可在按下启动服务按钮后创建一个用来负责监听的套接字在创建好了一个套接字过后,服务端便可以监听客户端的连接请求了。我们使用了一个集合的形式用来表示已连接上服务端的客户端相关信息:Dictionary dict = new Dictionary();/做一个集合以便用来包含已有的套接字Dictionary dictThread = new Dictionary();/做一个集合以便用来包含已有的线程在监听到一个客户端的连接请求过后,就将该客户端的信息添加到在线列表控件中直观显示,同时也添加到线程的集合和套接字的集合:Socke

4、t sokConnection = socketWatch.Accept();/ 一旦监听到一个客户端的请求,就返回与该客户端通信的套接字lbOnline.Items.Add(sokConnection.RemoteEndPoint.ToString();/ 向列表控件中添加客户端的IP信息; dict.Add(sokConnection.RemoteEndPoint.ToString(), sokConnection);/ 将与客户端连接的套接字对象添加到原有套接字集合中;为了使服务端能够顺利发送文件到客户端,我们写了一个实时用来判断客户端是否连接上服务端的子函数,使用了trycatch语句

5、用来捕获程序运行中的异常情况:在本次编程中,我们认为最大的困难是文件的打开以及如何将其正确存储到Byte数组中,从而将Byte数组发送至客户端。我们的思路是使用文件流的形式打开要发送的文件,然后使用Read函数从当前流中读取文件数据到一个Byte数组中:其中的txtSelectFile为通过选择文件按钮获取的文件名,并将其存入到的文本框另外,我们还定义了一个Byte数组用来发送文件的信息,即文件名和文件格式以及该文件转化为的字节数。最后使用BlockCopy函数将arrFile字节数组复制到arrFileSend字节数组中,然后将arrFileSend字节数组发送到客户端:客户端需求功能:连接

6、到tcp服务器后,被动接受服务器的文件传输请求,接受文件并保存到客户端本地主界面: 流程 1、创建socket套接字,获取IP地址对象,绑定套接字到IP和端口上(此处与前面服务器创建负责监听的套接字类似) 2、经三次握手连接服务器 3、当服务器向此客户端发送文件时弹出对话框接收并保存文件TextBox Button控件richTextBox1:显示消息;包括连接服务器,与服务器连接成功时也由此返回消息;接收文件时,接收文件名,文件长度消息;文件接收完成时,由此处向用户返回文件保存成功的消息。richTextBox2:输入服务器的IP地址,此处输入的IP文本并由IPAddress ip捕获richTextBox3:同IP的获取方式相同。button1:由此按钮来控制向服务器发送连接请求接收文件:首先接收文件名及其属性,然后接收到文件大小,弹出对话框后需要根据先前接收到的文件属性来保存文件类型。流程:1、先定义缓存区 2、接收数据到缓存区 3、保存文件使用SaveFileDialog控件弹出保存文件对话框 4、保存文件加了this的sfd.ShowDialog(this),“另存为”窗口的指针才能被SaveFileDialog的对象调用,若不加this SaveFileDialog 的对象调用的是本类的其他窗口则不会弹出另存为的窗口以上便是我们小组服务端、客户端程序的实现。最大的困难

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论