基于TCP协议通信的文件传输系统之服务端解读.pptxVIP

基于TCP协议通信的文件传输系统之服务端解读.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于TCP通信协议的文件传输系统 综述:本次编程中,我们小组从零起点实现了对C#中的Winform窗体应用的创建,简单控件的使用,以及C#语言中的Thread类、FileStream类、Directory类、IPAddress类、Socket类等类的简单使用。 我们小组的文件传输系统特点如下:1、基于TCP协议进行服务端和 客户端的连接,需提供服务端本机IP地址;2、多个客户端可连接同一服务器;3、服务端可主动选取客户端发送本地文件。 程序目前的缺点如下:1、发送文件不能超过100KB,大数据不能分包发(还在解决中);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.Text.Trim())); // 创建包含IP和端口号的网络节点对象; 上述三条语句可在按下启动服务按钮后创建一个用来负责监听的套接字 在创建好了一个套接字过后,服务端便可以监听客户端的连接请求了。我们使用了一个集合的形式用来表示已连接上服务端的客户端相关信息: Dictionarystring, Socket dict = new Dictionarystring, Socket(); //做一个集合以便用来包含已有的套接字 Dictionarystring, Thread dictThread = new Dictionarystring, Thread(); //做一个集合以便用来包含已有的线程 在监听到一个客户端的连接请求过后,就将该客户端的信息添加到在线列表控件中直观显示,同时也添加到线程的集合和套接字的集合: Socket sokConnection = socketWatch.Accept(); // 一旦监听到一个客户端的请求,就返回与该客户端通信的套接字 lbOnline.Items.Add(sokConnection.RemoteEndPoint.ToString()); // 向列表控件中添加客户端的IP信息; dict.Add(sokConnection.RemoteEndPoint.ToString(), sokConnection); // 将与客户端连接的套接字对象添加到原有套接字集合中; 为了使服务端能够顺利发送文件到客户端,我们写了一个实时用来判断客户端是否连接上服务端的子函数,使用了try…catch…语句用来捕获程序运行中的异常情况: 在本次编程中,我们认为最大的困难是文件的打开以及如何将其正确存储到Byte数组中,从而将Byte数组发送至客户端。我们的思路是使用文件流的形式打开要发送的文件,然后使用Read函数从当前流中读取文件数据到一个Byte数组中: 其中的txtSelectFile为通过选择文件按钮获取的文件名,并将其存入到的文本框 另外,我们还定义了一个Byte数组用来发送文件的信息,即文件名和文件格式以及该文件转化为的字节数。 最后使用BlockCopy函数将arrFile字节数组复制到arrFileSend字节数组中,然后将arrFileSend字节数组发送到客户端: 客户端 需求功能:连接到tcp服务器后,被动接受服务器的文件传输请求,接受文件并保存到客户端本地 主界面: 流程 1、创建socket套接字,获取IP地址对象,绑定套接字到IP和端口上(此处与前面服务器创建负责监听的套接字类似) 2、经三次握手连接服务器 3、当服务器向此客户端发送文件时弹出对话框接收并保存文件 TextBox Button控件 richTextBox1:显示消息;包括连接服务器,与服务器连接成功时也由此返回消息;接收文件时,接收文件名,文件长度消息;文件接收完成时,由此处向用户返回文件保存成功的消息。 richTextBox2:输入服务器的IP地址,此处输入的IP文本并由IPAddress ip捕获 richTextBox3:同IP的获取方式相同。 button1:由此按钮来控制向服务器发送连接请求 接收文件: 首先接收文件名及其属性,然后接收到文件大小,弹出对话框后需要根据先前接收到的文件属性来保存文件

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档