局域网文件传输系统_第1页
局域网文件传输系统_第2页
局域网文件传输系统_第3页
局域网文件传输系统_第4页
局域网文件传输系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、局域网文件传输系统摘要 随着国内外各公司企业的发展壮大和这些企业和公司在办公中更加频繁的使用网 络作为公司信息交流的渠道, 局域网络在人们的工作和生活中得到了充足的发展。 本课 题旨在培养学生利用现有技术进行实际动手的能力, 并使得学生能够深入了解局域网在 文件传输方面的应用。局域网小到网内只有两台PC 机,大到一个企业的内部网络,它们最主要的功能在于交流和传输文件,并且安全性高、速度快、准确性高。鉴于局域网有如上优点,开发一个方便快捷的局域网文件传输系统是很有意义的, 它在文件传输方面的高效准确将会提高企业的办事效率, 为企业节省开支, 为家庭用户 提供方便。关键词 TCP/IP 协议; C

2、/S 结构; Windows Sockets 编程; VC+LAN File Transfer SystemABSTRACTNowadays, along with the domestic and foreign companies more and more frequently use the network as a channel for the exchange of information after their companies have full development, the local area network (LAN) has been fully develop

3、ed in people' s life andwork. This paper aims at training students to use existing technology to practical use, and makes the students to understand the application of LAN in the file transfer. LAN in scale vary from a network within only two PC to an enterprise 's internal network, their ma

4、in function is communication and file transfer, and with the advantage of high safty, high speed and high accuracy.In view of LAN 's these advantages, it is of great significance to develop a convenient and efficient LAN file transfer system. For its 'high speed and accuracy, it will improve

5、 enterprises'work efficiency and provide convenient for families.Keywords The TCP/IP Protocol; C/S Structure; Windows Sockets Programming; VC+目录摘要 1Abstract 2第 1 章 绪论 51.1 选题背景 51.2国内外研究现状 51.3课题研究的意义 51.4论文研究内容 5第 2 章 理论知识 72.1 TCP/IP 协议 72.1.1 网络接口层 72.1.2 网络层 72.1.3 传输层 82.1.4 应用层 82.2 C/S 架构

6、 82.2.1 C/S 架构的概念 82.2.2 C/S 架构的具体操作步骤 92.3 VC可视化编程环境92.4 Windows Socket 编程知识 1.02.4.1 Windows Socket 的发展 1.02.4.2 Windows Sockets 的分类 1.02.4.3 Windows Sockets API 1.02.5 本章小结 1.1软件设计局域网文件传输系统程序设计局域网文件传输系统设计步骤设计客户端所用到的函数设计服务器所用到的函数消息与消息函数功能按钮与函数的对应关系软件测试程序的安装与运行在局域网内传输文件测试4.2.1 设置服务器4.2.2 设置客户机并传输文件

7、本章小结结论参考文献.......3.1.第3章 第4章第5章第 1 章 绪论1.1 选题背景随着国内外各公司企业的发展壮大和这些企业和公司在办公中更加频繁的使用网 络作为公司信息交流的渠道, 局域网络在人们的工作和生活中得到了广泛的发展。本课 题旨在培养学生利用现有技术进行实际动手的能力, 并使得学生能够深入了解局域网在 文件传输方面的应用。局域网小到网内只有两台 PC 机,大到一个企业的内部网络,它 们最主要的功能在于交流和传输文件,并且安

8、全性高、速度快、准确性高。鉴于局域网有如上有点,开发一个方便快捷的局域网文件传输系统是很有意义的, 它在文件传输方面的高效准确将会提高企业的办事效率, 为企业节省开支, 为家庭提供 方便。 本论文所设计的局域网文件传输系统通过局域网内用户的主机名、IP 地址和工作组的名称确定了需要传输文件的双方,进而以 C/S 模式通过 TCP/IP 协议实现双方文件 的传输功能。1.2 国内外研究现状大型局域网广泛存在于国内外大型企业中, 而大部分企业还是通过 Internet 等等外 网或者 U 盘等硬件来传输文件, 只有少数企业针对该企业的特点设计了自己的文件传输 系统,总的来说在企业内部发展局域网文件

9、传输系统还有很大的发展空间。从 1969 年美国国防部高级研究计划管理局 ( ARPA - - Advanced Research Projects Agency )建立了一个命名为 ARPAnet 的网络开始到今日,网络发展已走过足足 50 年 的时间,在这漫长的时间里,局域网文件传输系统也得到了相应的发展,现在正处于 高速发展阶段,这从现今市面上流行的腾讯 QQ、飞鸽传书等可见一斑。可以想象,在 不久的将来, 以内部网络为中心的资源共享系统将在全世界的信息流动中占有到举足轻 重的地位。1.3 课题研究的意义本课题使学生了解局域网在实际工作和生活中的应用, 通过让学生自己动手开发比 较简单局

10、域网文件传输系统来强化学生的理论知识,培养学生的实际动手能力。另外, 本课题也使得学生对软件开发有了一个感性的认识, 为我们在日后的工作中进一步设计 更复杂的系统打下了基础。1.4 论文研究内容用 Microsoft visual C+ 6.0 软件开发一个以 C/S 模式通过 TCP/IP 协议实现点到点文件传输的简单的局域网文件传输系统软件。该软件传输的文件格式包括文本文档(txt)、图片(JPG和压缩包(.rar)等等。该传输系统运行的操作系统平台为Windows XP或者 Windows 7 ,在传输文件之前,需要将多台 (>=2 台)电脑通过路由器或者交换机用网 线连接在一起,

11、为各台 PC机设置好IP并建立一个工作组。在这些电脑上分别安装局域网文件传输系统并运行,实现文件传输的具体步骤如 下:1、在工作组内的所有PC机上运行该软件,并将其中一台PC机设置为服务器2、在设置为服务器的PC机上打开要发送的文件3、 输入要接受文件的PC机的IP地址号、端口号,并连接服务器4、发送文件。第2章 理论知识包括 TCP/IP 协议, C/S这一章介绍开发局域网文件传输系统所涉及到的理论知识, 架构, VC 可视化编程环境, Windows Socket 编程。2.1 TCP/IP 协议TCP/IP 是 Transmission Control Protocol/Internet

12、 Protocol 输控制协议 / 因特网互联协议,又叫网络通讯协议,这个协议是 议、 Internet 国际互联网络的基础,简单地说,就是由网络层的的简写,中文译名为传 Internet 最基本的协 IP 协议和传输层的 TCP协议组成的。 TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。 TCP/IP 是一个四层的分层体系结构。高层为传输控制协议, 它负责聚集信息或把文件拆分成更小的包。 低层是网际协议, 它处理每个包的地址部分, 使这些包正确的到达目的地。从协议分层模型方面来讲, TCP/IP 由四个层次组成:网络接口层、网络层、传输 层、应用

13、层。 具体介绍如下2.1.1 网络接口层物理层定义物理介质的各种特性: 1、机械特性; 2、电子特性; 3 、功能特性; 4 、 规程特性。数据链路层是负责接收 IP 数据报并通过网络发送之,或者从网络上接收物理帧, 抽出 IP 数据报,交给 IP 层。常见的接口层协议有: Ethernet 802.3 、 Token Ring 802.5 、X.25、Frame relay 、 HDLC、PPP ATM 等。2.1.2 网络层网络层负责相邻计算机之间的通信。其功能包括三方面。( 1)、处理来自传输层的分组发送请求,收到请求后,将分组装入IP 数据报,填充报头,选择去往信宿机的路径,然后将数据

14、报发往适当的网络接口。( 2)、处理输入数据报:首先检查其合法性,然后进行寻径-假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿, 则转发该数据报。3)、处理路径、流控、拥塞等问题。2.1.3 传输层传输层负责提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可 靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须 重新发送。传输层协议主要是:传输控制协议 TCP(Transmission Control Protocol) 和用户数据 报协议 UDP(User Datagram protocol) 。2.1.4 应

15、用层应用层负责向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程 登录等。远程登录 TELNET 使用 TELNET 协议提供在网络其它主机上注册的接口。 TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。应用层一般是面向用户的服务。如 FTP、TELNET、DNS、SMTP、POP3。2.2 C/S 架构2.2.1 C/S 架构的概念C/S即Client/Server结构,是大家熟知的客户机和服务器结构。它是软件系统体系 结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client 端和 Server 端来实

16、现,降低了系统的通讯开销。目前大多数应用软件系统都是 Client/Server 形式 的两层结构,由于现在的软件应用系统正在向分布式的 Web 应用发展, Web 和 Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此, 内部的和外部的用户都可以访问新的和现有的应用系统, 通过现有应用系统中的逻辑可 以扩展出新的应用系统。这也就是目前应用系统的发展方向。传统的 C/S 体系结构虽然采用的是开放模式, 但这只是系统开发一级的开放性, 在 特定的应用中无论是 Client 端还是 Server 端都还需要特定的软件支持。由于没能提供 用户真正期望的开放环境

17、, C/S 结构的软件需要针对不同的操作系统系统开发不同版本 的软件,加之产品的更新换代十分快, 已经很难适应百台电脑以上局域网用户同时使用。 而且代价高,效率低。C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个:1、只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普 及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统 进行专门的设计来处理分布式的数据。2、客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台 电脑出问题,如病毒、硬件损坏,都需要

18、进行安装或维护。特别是有很多分部或专卖店 的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机 需要重新安装,其维护和升级成本非常高。3、对客户端的操作系统一般也会有限制2.2.2 C/S 架构的具体操作步骤客户/ 服务器模式在操作过程中采取的是主动请求方式。1、服务器方的具体操作步骤如下:(1)、首先服务器方要先启动,并根据请求提供相应服务。(2)、打开一个通信通道并告知本地主机,它愿意在某一端口上接收客户请求。( 3 )、等待客户请求到达该端口。(4)、接收到重复请求,处理该请求并发送应答信号。接收到并发服务请求,要 激活一新进程来处理这个客户请求。新进程处理此客户

19、请求,并不需要对其他请求做出 应答。服务完成后,关闭此进程与客户的通信链接,并终止该进程。( 5 )、返回第二步,等待另一客户请求。( 6 )、关闭服务器。2 、 .客户方的主要操作步骤如下:(1)、打开一通信通道,并链接到服务器所在主机指定端口。(2)、向服务器发服务请求报文,等待并接收应答;继续提出请求。(3)、请求结束后关闭通信通道并终止。2.3 VC 可视化编程环境在 Microsoft Visual C+ 6.0 开发环境 Developer Studio 是在 Windows 98/2000/XP/7 环境下运行的一套集成工具,由文本编辑、资源编辑器、项目建立工 具、优化编辑器、增

20、量连接器、源代码浏览器、集成调试器等组成。Visual C+ 6.0 的软、硬件配置需求如下:1、 操作系统: Windows 98 、 Windows2000 、 Windows XP 或者 Windows 7及更高版本。2、内存:根据不同操作系统设定,最好在 128M 以上。3、硬盘:最小需要 300MB 以上空间。4、 CD-ROM 驱动器(用于联机信息 )。2.4 WINDOWS SOCKET 编程知识2.4.1 WINDOWS SOCKET 的发展在 Intel 、Microsoft 、Sun、SDI、Informix 、 Novell 等公司的大力支持下,Win dows Sock

21、et (以下简称 Win Sock)从1991年的1.0版发展到1996年的2.2版。如 今 WinSock 已经成为 Windows 网络编程的标准。2.4.2 W INDOWS SOCKETS 的分类Win Sock编程分为同步(Sy nc)和异步(Async)。同步方式指的是发送方不等接收 方响应,便接着发下一个数据包得通信方式。同步方式逻辑清晰,编程专注于应用, 在抢先式的多任务操作系统中 (Win NT、Win 2000),采用多线程方式效率基本达到异 步方式的水平。而异步指发送方发出数据以后,等收到接收方发回的响应, 才发出下一 个数据包的通信方式。阻塞套接字是指执行此套接字的网络

22、调用时, 直到成功才返回, 否则一直阻塞在此 网路调用上,比如调用 recv() 函数读取网路缓冲区中的数据,如果没有数据到达,将一 直用 recv() 这个函数调用上,知道读到一些数据,此函数才返回;而非阻塞套接字是指 此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用 recv() 函数读取网 络缓冲区中的数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。在 实际 Windows 网络通信软件中,异步非阻塞套接字是用的最多的。平常所用的 C/S 结 构软件用到的就是异步非阻塞模式的。2.4.3 W INDOWS SOCKETS APIWindows提供了一系列的 AP

23、I来支持Sockets,主要包括两类,一类是 berkeley类 型的函数,另一类是已经认可的作为 Windows Sockets 2 的一部分的 Windows 特殊的 扩展函数。下面对一些常用的 Windows Sockets API 函数进行简单说明:1 、 socket() :创建一个 Socket。所有的通信在建立连接之前都要创建一个Socket,该函数的功能与文件操作中的fopen 类似。2 、 bind() :为创建的 Socket 指定通讯对象。成功建立 Socket 之后,就应该选定通信的对象。首先是自己的程序需要与网络上 的哪台计算机通话;其次,在多任务的系统下,该台计算机

24、可能会有几个程序在工作, 必须指出与那个程序通信。 前者可以通过 Intenet 的网络 IP 地址来确定, 而后者就需要 指出端口号, 用端口号来表示同一台计算机上不同的应用程序, 可以从 0-65536 之间任 选, 不同功能的应用程序使用不同的端口号,这样一台计算机上可以有几个程序同时使用一个 IP 地址而互不干扰。3、 listen() :设置等待连接状态。对于服务器的程序,当申请到 Socket,并制定通信对象为INADDR-ANY之后,就 应该等待一个客户机的程序来要求连接。而 listen() 就是把一个 Socket 设置这种状态的 函数。4、accept() :接收请求连接。

25、当没有连接请求时,对于阻塞方式,就进入等待状态,直至有一个请求到达为止。5、connect() :主动提出请求连接。以上的 bind() 、listen() 、和 accept() 函数一般都用于服务程序,属于被动等待的函 数;对于客户端,要主动提出连接请求,应使用 connect() 函数。6、sent()/recv(): 发送、接受数据。7、connect() :直接通信。8、closesocket(SOCKET s):通信结束,关闭指定的 Socket。2.5 本章小结这一章所介绍的 TCP/IP 协议、编程的相关知识是下一章所展示的软件的编写基础, 只有在这一章的理论指导下, 软件的编

26、写才能合乎实际, 才能最终实现在局域网内传输 文件。第3章软件设计在第三章中展示了用局域网文件传输系统,并成功传输了一个文件,这一章将对程 序内部的细节予以介绍。该局域网文件传输系统使用VC+为编程语言,编程软件为Microsoft Visual C+,使用对话框为该软件的编程框架,其中用到了C+标准库函数和MFC类库,在并将其转化为自己所需要的功能函数。客户机和服务器的信息流如图4-1所示:3.1局域网文件传输系统程序设计局域网文件传输系统的主要功能是建立与服务器的连接,向服务器发送数据,并且能够接收由服务器传送而来的数据。局域网文件传输系统如图3-2所示:阕 L inFil-Ti,in 十

27、-1局域阚文件播输狂地址:| 192 ? 163 . 0:I端口号:; 阿爭要传输的文件路径C; UsarsgaQwaiDaskt opFil«打开文件 |设置威服务器|祐输文件|确走取消I3.2局域网文件传输系统设计步骤(1)创建一个基于对话框的应用程序,在对话框中添加IP地址、Edit Box、Progress Bar等控件,如图3-3所示:09 L -iiFikTi iiv.-frer局域网文件鶴输if 地址:i:端口号:I需要鶴输的文件路径:I打开文件I设置感朋势器传输文件I确定I取消I话框为对话框中的控件命名或关联数据。如图3-4所示:(3)在对话框类的头文件中引用win

28、sock2.h头文件,并导入 ws2_32.lib 库文件。#include ” winsock2.h ”#pragma comment(lib, ” ws2_32.lib ” )(4)在应用程序的Ini tI nsta nee方法中初始化逃接字。WSADATA wsd;WSAStartup(MAKEWORD(2,2), &wsd);(5)在对话框的OnitDialog 方法中创建套接字。M_Clie nt=socket ( AF_INET,SOCK_STREAM,0;(6)在对话框类中添加成员函数CStri ngm_FileName; /传送的文件名称BOOLm_lsReveived

29、; /是否接收数据CStringm_ReceiveFile; /接收的文件名称DWORDm_FileSize; /接收的文件大小DWORDm_FileLen ; /接收的文件长度CServerSocket* m_pServerSock; /接收文件套接字CServerSocket* m_ServerSock;CClientSocket* m_pSendSock; /发送文件套接字CFilem_File; /保存接收的文件BOOLm_Send; /是否开始发送数据BOOLm_SendNext; /是否继续发送数据DWORDm_SendNum; /记录当前发送的次数CFilem_SendFile;

30、 /发送的文件DWORDm_SendLen; /记录已经发送的文件长度DWORDm_SendFileLen; /发送文件的长度CStringm_IP; /本机 IPBOOLm_Received; /判断是否接收到对方的回应信息BOOLm_SendFinished;/发送是否完成intm_Count;(7)向对话框类中添加 AcceptConnection 方法,用于接受客户端套接字的连接Void LANFileTransfer:AcceptConnect()M_serverSock->Close();M_pServerSock->Accept(*m_ServerSock);(8)处

31、理”设置成服务器”按钮的单击事件,创建服务器,并设置设置套接字接收数据时 触发的消息。Void CLanFileTransfer: OnSetServer()Sockaddr_in serveraddr;UpdateData(TRUE);Serveraddr.sin_family=AF_INET;Serveraddr.sin_port=htons(m_port);Serveraddr.sin_addr.S_un.S_addr=inet_addr(m_IP);If(connect(m_client,(Sockaddr*)&serveraddr,sinzeof()serveraddr)!=

32、0)MeesageBox(“ connectFail! ” )Return;ElseMessageBox(“ Connected! ”);WSSAAsyncSelect(m_client,m_hWnd,1000,FD_READ);CString str,Info;m_path.GetWindowText(str);info.Format( “%s %s ” ,str, ”It 's allowed to Transfer file InLanFile! ” );int i=send(m_Client,Info.GetBuffer(0),info.GetLength(),0);(9) 处

33、理“发送”按钮的单击事件,向服务器发送数据。Void CLanFileTransfer: void CTransFileDlg:SendFileData()m_Send=TRUE;m_SendNext = TRUE;m_Received = TRUE;char data100;memset(data,0,100); m_SendNum +=1;获得对方的应答信息发送文件完成m_pSendSock->Receive(data,100); /CString rdata = data;if (m_SendLen>=m_SendFileLen) /m_Send = FALSE; m_Sen

34、dNext = FALSE; m_SendFile.Close(); m_pSendSock->Close(); m_pSendSock->Create(CLIENTPORT); MessageBox(" 发送完成 ");return;if (m_SendLen=0)&&(rdata=" 取消 "m_Send = FALSE; m_SendNext = FALSE; m_SendFile.Close(); m_pSendSock->Close(); m_pSendSock->Create(CLIENTPORT);M

35、essageBox(" 对方取消了文件接收 ");return;char* membuf= (char*)LocalAlloc(LMEM_FIXED,MAXSENDNUM); memset(membuf,0,MAXSENDNUM);int result;if(m_SendLen<m_SendFileLen)&&(m_SendLen+MAXSENDNUM)>m_SendFileLen) m_SendFile.ReadHuge(membuf,m_SendFileLen-m_SendLen);result = m_pSendSock->Send(

36、membuf, m_SendFileLen-m_SendLen);if (result =SOCKET_ERROR)m_Send = FALSE;m_SendNext = FALSE;m_SendFile.Close();m_pSendSock->Close();m_pSendSock->Create(CLIENTPORT);LocalFree(membuf);KillTimer(1);MessageBox(" 发送失败 ");return ;m_SendLen =m_SendFileLen;elsem_SendFile.ReadHuge(membuf,MAXS

37、ENDNUM);result = m_pSendSock->Send(membuf, MAXSENDNUM);if (result =SOCKET_ERROR)m_Send = FALSE;m_SendNext = FALSE;m_SendFile.Close();m_pSendSock->Close();m_pSendSock->Create(CLIENTPORT);LocalFree(membuf);KillTimer(1);MessageBox(" 发送失败 ");return;LocalFree(membuf);m_SendLen +=MAXSEN

38、DNUM;(10 )向对话框中添加 ReceiveData 方法,用于接收从服务器传来的数据。Void LANFileTransfer:ReceiveData()VOID* BUFFER = ( VOID*)L OCALALLOC(LMEM_FIXED,MAXSENDNUM+1);IF ( M_I SREVEIVED) / 第一次接收数据 , 获取接收的文件信息CHAR* FILEINFO = ( CHAR*)L OCALALLOC(LMEM_FIXED,MAX_PATH+4);MEMSE(TFILEINFO,0,MAX_PATH+4);INT LEN = M_SERVERSOCK->R

39、ECEIVE( FILEINFO,MAX_PATH+4); M_RECEIVEFILE .F ORMA(T"%S", FILEINFO); / 记录接收的文件名 CHAR* TEMP = FILEINFO ;WHILE ( TEMP0 !=0)TEMP+=1;TEMP+=1;M_FILE SIZE = ATOI ( TEMP); / 记录接收的文件大小LOCALFREE( FILEINFO);M_FILELEN = 0;CSTRING NAME= GETFILE NAME( M_RECEIVEFILE);IF (MESSAGBEOX(" 是否接收数据 ?"

40、;," 提示 ",MB_YESNO)=IDYES) BROWSEINFBOI NFO;BI NFO. HWNODWNER= M_HWND;BI NFO. PIDLROOT = NULL;CHAR FILENAMEMAX_PATH;CHAR DIRMAX_PATH;MEMSE(TFILENAME,0,MAX_PATH);MEMSE(TDIR,0,MAX_PATH);BI NFO. PSZDISPLAYNAME = FILENAME;BI NFO. LPSZTITLE =" 请选择目的路径 "BI NFO. ULFLAGS =BIF_BROWSEINCLUD

41、EFILES|BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS|BIF_BROWS EFORCOMPUTER;BI NFO. LPARAM =NULL;BI NFO. LPFN =NULL;BI NFO. I I MAGE= 0;LPITEMIDLIST LPLIST = SHBROWSFEORFOLDER(&BI NFO);CSTRING FILEDIR;IF (SHGETPATHFROMIDLIST(LPLIST, DIR)M_FILE.A BORT();FILEDIR = DIR;FILEDIR += ""M_FILE .O

42、 PEN( FILEDIR+NAME,CFILE : MODCEREATE|CF ILE : MODWERITE);M_I SREVEIVED = FALSE; / 文件信息接收结束M_SERVERSOCK->SEND("1111",4);LOCALFREE( BUFFE)R;RETUR;NELSE / 拒绝接收文件M_FILE .C LOSE();LOCALFREE( BUFFE)R;M_SERVERSOCK->SEND(" 取消 ",4);M_SERVERSOCK->CLOSE();M_I SREVEIVED = TRUE;RETU

43、R;NELSEL OCALFREE( BUFFER);M_SERVERSOCK->SEND(" 取消 ",4);M_SERVERSOCK->CLOSE();M_I SREVEIVED = TRUE;RETUR;NELSE / 开始接收数据 INT FILELEN = M _SERVESROCK->RECEIVE( BUFFER,MAXSENDNUM+1);IF ( FILELEN=SOCKET_ERROR) M_I SREVEIVED = TRUE;M_FILE .C LOSE();M_SERVERSOCK->CLOSE();LOCALFREE( B

44、UFFE)R;MESSAGBEOX(" 数据接收错误 ");RETUR;NM_FILELEN += FILELEN;M_FILE .WRITEHUGE( BUFFER, FILELEN);LOCALFREE( BUFFE)R;IF ( M_FILE LEN>=M_FILESIZE) / 接收完成 M_FILE .C LOSE();M_SERVERSOCK->SEND(" 结束 ",4);M_I SREVEIVED = TRUE;M_SERVERSOCK->CLOSE();MESSAGBEOX(" 接收完成 ");EL

45、SEM_SERVERSOCK->SEND("1111",4);3.3 设计客户端所用到的函数(1)FileOpen() 打开文件对话框, 用来获取文件路径, 并将其路径显示文件路径编 辑框中。文件路径编辑框中。( 2)OnFileTransfer() 通过设置好了的 IP 地址和端口号, 该函数将实现文件从客户 机到服务器文件的传输。( 3)InitAndConnet(HWND hwnd,UINT Port,CString strserver) 这个函数用来创建套 接字,通过界面上输入的 IP 地址连接服务器。(4) Connect() 连接服务器函数。( 5 ) C

46、loseSocket 关闭一个 Socket 。3.4 设计服务器所用到的函数(1)OnSetServer() 这个函数用来创建服务器线程,并侦听局域网络中接发文件的 请求。(2)Accept() 用来接受客户机的连接请求。(3) Listen() 这个函数用来将 Sokket 设置成连接等待状态。( 4 ) CloseSocket() 关闭一个 Socket。3.5 消息与消息函数#define SER_MESSAGE WM_USER +100#define SER_MESSAGE WM_USER +101Afx_msg LRESULT OnServerMessage(WPARAM wPar

47、am,LParam lParam)Afx_msg LRESULT OnClientMessage(WPARAM wParam,LParam lParam)afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 这个函数是系统命令响 应函数afx_msg void OnPaint(); 这个函数是系统界面构建函数afx_msg HCURSOR OnQueryDragIcon(); 这个函数是消息队列函数afx_msg void OnOpenFile(); 这个函数负责构建文件打开对话框,并使传输文件进入 准备状态afx_msg void OnSetServer(); 这个函数用来创建服务线程,侦听网络中的消息afx_msg void OnFileTransfer(); 这个函数用来传输文件3.6 功能按钮与函数的对应关系ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON

温馨提示

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

评论

0/150

提交评论