实验七 网络程序设计综合实验

合集下载

计算机网络课程原始套接字编程实验的实践探索

计算机网络课程原始套接字编程实验的实践探索

计算机网络课程原始套接字编程实验的实践探索摘要:简述计算机网络课程及实验体系的发展状况,指出原有实验模式的不足,改革实验体系并新增了部分原始套接字实验模块,以网络嗅探程序设计为例给出原始套接字程序设计实验的目的、要求和实现方法,分析总结了原始套接字实验的特色和优势。

关键词:网络实验;原始套接字;协议分析;综合设计作为计算机科学与技术、软件工程、网络工程等专业重要的学位课和考研课,计算机网络课程在我校开设已整整20年,先后历经多次课程和实验体系改革,在IT人才培养和专业建设方面发挥着重要作用。

1990年,计算机网络课程在我校计算机应用87级本科班正式开设;1996年,计算机网络课程从OSI开放式系统互连模型转向到TCP/IP协议体系;2001年,计算机网络课程实施双语教学并成为我校首批双语示范课程;2003年,Cisco网络技术引入网络课程教学;2004年,计算机网络课程被评为校优质课和首批校级精品课。

2004年以后,计算机网络实验课程主要采用Java套接字编程和思科网络配置管理相结合,在学生动手能力培养方面取得了积极效果。

然而,Java套接字技术只能进行应用层编程,路由配置管理则只关注网络互连设备的操作管理,这对于理解底层网络协议是不够的。

在此背景下,课程组对网络实验课程进行了改革,在原有实验环节中增加了原始套接字实验,将操作、验证、分析和设计结合起来,在提高动手能力的同时,加深了学生对于网络协议的理解和运用。

1计算机网络课程实验体系目前,我院网络课程体系包括了计算机网络原理、TCP/IP协议分析、网络安全、路由与交换、无线网络技术、网络编程以及网络管理等7门专业课程。

其中,计算机网络原理为必修课和研究生入学统考课,面向计算机科学与技术、通信工程、软件工程等专业开设,而不同专业的后续网络课程安排有所差异。

从有利于学生综合素质和创新能力的培养角度出发,课程组对计算机网络原理实验课程进行了调整,增加了两个原始套接字编程设计实验,将网络编程深入到底层协议,旨在强化学生深入理解网络协议和报文格式。

实验七网络程序设计综合实验

实验七网络程序设计综合实验

网络程序设计实验报告实验名称: winsock 编程接口实验实验类型:设计型指导教师:贾浩专业班级:信安1204 姓名:马灿学号: 20123252 电子邮件:实验地点:东6 E307 实验日期:实验成绩:__________________________实验七网络程序设计综合实验摘要:本课程设计包含了文件传输协议的简单设计及实现。

文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。

文件传输协议的简单设计及实现建立在计算机网络实验环境TCP/IP网络体系结构之上,使用socket编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),利用了已有网络环境设计并实现简单应用层协议。

本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。

关键词:SOCKET编程,FTPclient/server程序一.问题描述及设计思路1.1 问题描述服务器端:1.指定一个目录作为FTP目录(之后所有的文件操作均在此目录下进行)2.接收客户端的命令请求并提供相应的服务。

客户端:完成及FTP用户的人机界面,以命令的方式向服务器请求服务,主要的命令有: 1.CONNECTIP地址端口号2.指定FTP服务器的IP地址和端口号,连接到服务器。

响应:连接成功/失败。

3.LOGIN用户名4.用户登录(假设在服务器端有用户管理功能)5.响应:若用户不存在,提示“无此用户”;若用户存在,提示“密码:”;用户输入密码后,若正确提示“登录成功”;若不成功,提示“密码错误”。

6.3.DIR7.显示FTP服务器的FTP目录的文件列表(假设无子目录)8.响应:目录列表(只要文件名即可)。

9.4.GET文件名10.将FTP目录下的文件下载到本地,支持断点续传11.响应:传送成功/失败/无此文件。

2012-2013第二学期软件工程实验指导书--完整版

2012-2013第二学期软件工程实验指导书--完整版

辽宁工程技术大学应用与技术学院实验指导书实验科目:软件工程及测试系别:计算机系专业:计算机应用编写人:包剑时间: 2013年2月前言《软件工程及测试实验》是为应用技术学院计算机应用专业《软件工程及测试》课程配套设置的,是《软件工程及测试》课程讲授中一个重要的、不可或缺的环节。

其目的是使学生能够针对具体软件工程项目,全面掌握软件工程管理、需求分析、概要设计、详细设计、软件测试等阶段的方法和技术,通过实验使学生进一步理解和掌握软件开发模型、软件生命周期、软件过程等理论在软件项目开发过程中的意义和作用,培养学生按照软件工程的原理、方法、技术、标准和规范,进行软件开发的能力,培养学生的合作意识和团队精神,培养学生对技术文档的编写能力,使学生提高软件工程的综合能力,提高软件项目的管理能力。

按该课程的特点,实验内容包括软件开发的两大方法学的专题训练,即结构化(生命周期学)的方法学和面向对象的方法学,通过分析一个简单项目,要求学生利用结构化软件开发技术或面向对象的软件开发技术完成对该项目的开发。

因此设置的实验项目,从项目开发的准备工作,系统分析过程,系统设计过程,软件测试到系统实施,覆盖软件开发的整个过程,此外又引入我国国家《计算机开发规范》,以规范技术文档的书写标准,提高实验教学质量。

通过实验训练,达到如下目的:使学生进一步了解和掌握软件工程原理,提高对实际项目的分析和设计能力,通过实验课程,熟悉和基本掌握软件工程方法学、软件开发的过程,文档资料的编写格式及规范,全面领会和贯通所学习的理论知识,从而培养学生综合运用所学课程知识,分析解决问题的能力,培养学生理论联系实际作风,实事求是,严肃认真的科学态度和良好的工作作风,为今后工作打下基础。

概述一、实验目的《软件工程及测试》是一门实践性很强的课程,上机实验是其重要的环节,实验配合《软件工程及测试》课程的学习而制订的,其实验目的和任务是:通过实验,熟悉和基本掌握软件的工程设计方法、软件工程设计的表达形式、以及实现工程设计的辅助软件工程工具的使用。

网络程序设计实验报告

网络程序设计实验报告

网络程序设计实验报告实验报告:网络程序设计一、实验目的本实验主要目的是通过网络程序设计的实践,提升学生对网络编程的理解和能力。

通过完成实验,学生需要掌握以下知识和能力:1.了解网络编程的基本概念和原理;2.熟悉TCP/IP协议栈中的各个协议;3.掌握Socket编程的基本方法和使用;4.学会利用网络进行进程间通信;5.了解常用的网络编程框架和库。

二、实验环境和工具1.计算机操作系统:Windows/Linux/MacOS;2.编程语言:C/C++/Java/Python等;3.开发工具:Visual Studio/Eclipse/PyCharm等。

三、实验过程与结果1.实验过程本次实验我们选择使用C语言进行网络程序设计,采用Socket编程进行实践。

首先,我们需要了解Socket编程的基本原理和方法。

Socket编程是一种应用程序设计接口(API),用于在网络上实现进程间的通信。

我们需要创建一个套接字(Socket),并使用Socket函数进行通信的建立和数据的传输。

在实际的网络程序设计中,先创建一个Socket,然后通过bind函数将Socket绑定到一个本地的端口上。

接着,使用listen函数将Socket设为监听状态,等待客户端的连接请求。

一旦有客户端请求连接,使用accept函数接受连接请求,并获得一个新的Socket,通过新的Socket进行数据的传输。

接下来,我们可以使用send和recv函数进行数据的传输。

send函数用于将数据发送给连接的另一方,而recv函数则用于从连接的另一方接收数据。

使用send函数发送数据时,需要指定数据的大小和发送的目标地址;而接收数据时,需要指定接收数据的大小和接收数据的缓冲区。

最后,通过close函数关闭Socket,释放资源,并结束网络连接。

2.实验结果经过实验,我们成功实现了一个简单的网络通信程序。

在服务器端,我们通过创建一个Socket,并将其绑定到本地的一个端口上;然后使用listen函数将Socket设为监听状态,并等待客户端的连接请求。

网络综合实验报告

网络综合实验报告

专业综合实验报告课程名称:专业综合实验课题名称:校园网—接入层和汇聚层姓名:班级:带教老师:报告日期: 2013.12.9--2013.12.13 电子信息学院目录一、综合实验的目的和意义 (4)二、综合实验的内容 (5)2.1 校园网需求分析 (5)2.2校园网规划..................................................................................... 7 2.3网络技术指导与测试分析 ............................................................ 9 三、综合实验的步骤与方法 (17)3.1项目需求分析 .............................................................................17 3.2制定网络工程项目实施目标方案 .............................................17 四、综合实验的要点 ..................................... 18 五、小组分工........................................... 19 六、结果分析与实验体会.................................. 19 七、问题............................................... 20 参考文献 (21)前言通过专业综合实验,使学生在掌握了网络工程专业的理论知识和实践知识的前提下,能够完成从网络设备的选型、配置、设计、施工、组建,到测试、管理、维护、应用、开发等一系列贯穿网络工程全过程所有实验任务。

同时,也使得每个学生能够满足网络工程专业的“建好网、管好网、用好网”的四年培养目标。

计算机信息管理专业课程实验

计算机信息管理专业课程实验

计算机信息管理专业课程实验课程编码课程名称课程实验内容实验性质学时计算机应用基础统必 45 1(实验一:WindowsXP基本操作和汉字输入练习2(实验二: 文字编辑和排版3(实验三:表格编辑4(实验四:演示文稿制作5(实验五: 因特网接入、浏览网页和电子邮件的收发网络实用技术基础统必 24 实验一局域网安装与使用实验二 Internet接入与应用实验三 Windows 2000 安装与配置实验四局域网交换机设置实验五路由器的基本设置实验六网络安全54 统必 Dreamweaver网页设计实训1:基本网页设计实训2利用表格进行网页排版实训3使用页面布局模式实训4对网页进行排版应用CSS样式表实训5在网页中应用模板实训6在网页中应用库实训7在网页中插入导航条和翻转按钮实训8插入Flash及多媒体内容实训9使用层进行网页的排版和布局选做实训题实训1:插入Flash及多媒体内容实训2:自行设计和制作个人网站实训3:自行设计和制作商业网站数据库基础与应用统必 42 本课程必做实验共42学时,具体题目如下:(1) ACCESS实验内容12学时实验一表的操作实验二查询操作实验三窗体的操作实验四报表的操作实验五宏与数据访问页的使用实验六数据导入与导出(2) SQL Server实验内容30学时实验一安装与配置SQL Server实验二创建“进销存”数据库实验三创建表和索引实验四备份与恢复数据库实验五 Transact-SQL综合查询应用实验六触发器设计实验七存储过程设计(选做)实验八数据库安全性管理(选做) 实验九 ODBC及SQL Server应用程序设计(选做)36 限选 Visual Basic程序设计实验一:Visual Basic开发环境实验二:简单程序设计实验三:菜单设计实验四:鼠标、键盘、API函数调用实验五:文件管理程序设计实验六:绘图和多媒体应用实验七:数据库应用程序设计实验八:网络应用程序设计实验九:简单程序调试及错误处理实验十:ActiveX的简单应用。

一次局内正常通话的呼叫处理程序

一次局内正常通话的呼叫处理程序

⼀次局内正常通话的呼叫处理程序⼀次局内正常通话的呼叫处理程序1、课程设计⽬的呼叫处理程序⽤于控制呼叫的建⽴和释放。

呼叫处理程序包括⽤户扫描、信令扫描、数字分析、路由选择、通路选择、输出驱动等功能块。

(1)⽤户扫描⽤户扫描⽤来检测⽤户回路的状态变化:从断开到闭合或从闭合到断开。

从状态的变化和⽤户原有的呼叫状态可判断事件的性质。

例如,回路接通可能是主叫呼出,也可能是被叫应答。

⽤户扫描程序应按⼀定的扫描周期执⾏。

(2)信令扫描信令扫描泛指对⽤户线进⾏的收号扫描和对中继线或信令设备进⾏的扫描。

前者包括脉冲收号或DTMF收号的扫描;后者主要是指在随路信令⽅式时,对各种类型的中继线和多频接收器所做的线路信令和记发器信令的扫描。

(3)数字分析数字分析的主要任务是根据所收到的地址信令或其前⼏位判定接续的性质,例如判别本局呼叫、出局呼叫、汇接呼叫、长途呼叫、特种业务呼叫等。

对于⾮本局呼叫,从数字分析和翻译功能通常可以获得⽤于选路的有关数据。

(4)路由选择路由选择的任务是确定对应于呼叫去向的中继线群,从中选择⼀条空闲的出中继线,如果线群全忙,还可以依次确定各个迂回路由并选择空闲中继线。

(5)通路选择通路选择在数字分析和路由选择后执⾏,其任务是在交换⽹络指定的⼊端与出端之间选择⼀条空闲的通路。

软件进⾏通路选择的依据是存储器中链路忙闲状态的映象表。

(6)输出驱动输出驱动程序是软件与话路⼦系统中各种硬件的接⼝,⽤来驱动硬件电路的动作,例如驱动数字交换⽹络的通路连接或释放,驱动⽤户电路中振铃继电器的动作等。

忙时呼叫次数(BHCA:Busy Hour Call Attempts)交换系统单位时间⾥的通信处理次数,是表征交换机的通信处理能⼒的专业衡量参数。

公式如下:BHCP= ⽤户话务量×⽤户数 + ⼊中继话务量×中继线数⽤户平均通话时长 + 中继线平均通话占⽤时长1.通过设计,掌握程控交换系统的硬件电路组成与作⽤。

个人网站设计实验报告

个人网站设计实验报告

河南工程学院实习报告课程名称程序设计实训设计题目个人网站的设计与实现系(部)计算机学院班级学号姓名实习时间2013.12.30-2014.1.3指导教师李艳玮2014年 1 月3日实习(训)报告评语等级:评阅人:职称:年月日目录一、实训题目 (4)二、系统需求分析 (4)2.1可行性分析 (4)2.1.1社会可行性 (4)2.1.2技术可行性 (4)2.1.3经济可行性 (5)三、系统设计目标和原则 (5)3.1设计目标 (5)3.2设计原则 (6)四、系统功能模块设计 (6)4.1前台管理模块 (6)4.2 后台管理模块 (7)五、数据库设计 (7)5.1数据库表设计 (7)5.1.1 dbo.Logger(文章信息表) (7)5.1.2 dbo.LoginTime(登录时间表) (8)5.1.3 dbo.MessageBoard(文章信息表) (8)5.1.4 dbo.Mood(日志表) (9)5.1.5 dbo.Musics(音乐文件信息表) (9)5.1.6 ers(用户登录表) (9)六、基本程序清单 (10)6.1 数据库连接类清单 (10)6.2页面清单 (12)6.2.1登陆界面 (12)6.2.2关于我们 (15)6.2.3音乐页面 (15)七、实训总结 (19)个人网站设计与实现一、实训题目个人网站设计与实现二、系统需求分析信息时代的今天,网络已经成为人们工作、学习的一部分,不断充实和改变着人们的生活。

在网络中,一个个性化的个人网站,可以充实地表达自己的想法,通过发布日志文章展示个人能力,抒发个人情感,朋友则可以根据主题发表个人的意见,表达自己的想法,进行思想交流,乐在其中。

也可以通过个人网站让朋友更加清楚的了解自己的爱好和习惯。

通过网络,更加了解身边的人。

2.1可行性分析2.1.1社会可行性社会可行性具有比较广泛的内容,需要从政策、法律、道德、制度、等社会因素论证开发的可行性和现实性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络程序设计实验报告实验名称:winsock 编程接口实验实验类型:设计型指导教师:**专业班级:信安1204*名:**学号:********电子邮件:实验地点:东6 E307实验日期:实验成绩:__________________________实验七网络程序设计综合实验摘要:本课程设计包含了文件传输协议的简单设计与实现。

文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。

文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP网络体系结构之上,使用socket编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),利用了已有网络环境设计并实现简单应用层协议。

本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。

关键词:SOCKET编程,FTPclient/server程序一.问题描述及设计思路1.1 问题描述服务器端:1.指定一个目录作为FTP目录(之后所有的文件操作均在此目录下进行) 2.接收客户端的命令请求并提供相应的服务。

客户端:完成与FTP用户的人机界面,以命令的方式向服务器请求服务,主要的命令有: 1.CONNECTIP地址端口号2.指定FTP服务器的IP地址和端口号,连接到服务器。

响应:连接成功/失败。

3.LOGIN用户名4.用户登录(假设在服务器端有用户管理功能)5.响应:若用户不存在,提示“无此用户”;若用户存在,提示“密码:”;用户输入密码后,若正确提示“登录成功”;若不成功,提示“密码错误”。

6.3.DIR7.显示FTP服务器的FTP目录的文件列表(假设无子目录)8.响应:目录列表(只要文件名即可)。

9.4.GET文件名10.将FTP目录下的文件下载到本地,支持断点续传11.响应:传送成功/失败/无此文件。

12. 5.PUT文件名13.将本地文件上传到FTP目录,支持断点续传14.响应:传送成功/失败/无此文件。

15. 6.HELP(客户端和服务器端均有该功能)16.实验环境本次实验采用MFC工程工程采用MFC对话框界面工程名称为MyServer和FTPSOCKET。

17.详细设计过程1.2 设计思路1. FTP协议基础FTP 是 TCP/IP 协议组中的协议之一,该协议是Internet文件传送的基础,它由一系列规格说明文档组成。

目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。

简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上或从自己计算机中拷贝至远程计算机上。

在TCP/IP协议中FTP标准命令TCP端口号为21,Port 方式数据端口为20。

2. 网络文件传输原理在通信的时候主要可以分为两个部分。

一个部分是用于传送控制信息,例如发送文件的请求文件的名称、大小等。

采用MFC所提供的CSocket类的串行化技术来实现,而另一个部分就是文件的传输部分。

对于文件的传输,由于数据量相对来说比较大,使用两个线程。

一个用于发送,一个用于接收。

这两个部分在具体实现的时候分别建立有自己的套接字。

FTP编程基础3. FTP传输原理FTP协议使用两条单独的TCP连接一条专用于发送FTP命令另一条则专用于传递数据。

初始建立连接时服务器在21号端口上接收来自客户端的命令连接。

当需要传送数据时文件列表、文件数据等客户端向服务器发出Port命令并进入监听状态等待来自服务器的数据连接请求。

总体功能模块图服务器端功能说明:线程控制:线程类别:选择线程类别,单线程或多线程传送文件线程数设置:若选择多线程,可自行设置线程数目,若选择单线程,则默认线程数目为1②启动服务器:设置好线程控制后,点击“启动”按钮启动服务器端③选取文件:选择要发送给客户端的文件④发送文件:获取要发送文件属性:获取到要传送给客户端的文件的基本属性,包括:文件名,大小(B),已发送多少(B),文件路径发送进度显示:显示给客户端发送文件的进度⑤ ChatWithServer:启动采用UDP协议的简单聊天系统,用来与客户端进行通讯(客户端和服务器端都得启动,否则无法收到)⑥ Help:显示服务器端使用说明客户端功能说明:握手服务器:输入服务器端IP地址,点击“握手服务器”按钮,获取服务器端启动的线程数②连接服务器:与服务器进行连接③接收文件:获取接收文件属性:获取到要接收的服务器端传来的文件的基本属性,包括:文件名,大小(B),已接收多少(B),文件存储路径接收进度显示:显示已接收文件的进度④ ChatWithServer:启动采用UDP协议的简单聊天系统,用来与客户端进行通讯(客户端和服务器端都得启动,否则无法收到)⑤获取IP地址:获取本机的主机名及IP地址⑥ HELP:显示客户端使用说明2、系统结构3、主要功能流程图(1)文件传输流程图2、用例描述(1)文件传送用例描述二.功能实现及主要代码服务器端启动服务,端口号为8888客户端连接服务,服务器的ip地址为111.9.118.115 连接成功添加用户用户验证上传文件2.txt,上传到C盘刷新服务器,c盘中有2.txt,上传成功添加文件下载文件文件下载到E盘三实验总结通过这次实验,我很好的了解到了文件传输的流程,了解到文件传输协议使得主机间可以共享文件。

FTP 使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。

控制连接使用类似TELNET协议在主机间交换命令和消息。

文件传输协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。

FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。

对套接字的使用和通信模型通信机制有了进一步了解,也熟练的掌握了如何选择通信模型。

对各个函数的使用也有了进一步了解。

四附录代码:服务器初始化套接字BOOL CFTPServerDlg::InitSocket(){if(m_sock == INVALID_SOCKET){m_sock = socket(AF_INET,SOCK_STREAM ,0);}if(INVALID_SOCKET == m_sock){MessageBox("创建套接字失败!");return FALSE;}CString sPort;GetDlgItem(IDC_EDIT_PORT)->GetWindowText(sPort);MessageBox("开启的端口:"+sPort);int nPort = atoi(sPort);if(nPort < 1 || nPort > 65535){MessageBox("端口号错误!");return FALSE;}SOCKADDR_IN srvAddr;srvAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);srvAddr.sin_family = AF_INET;srvAddr.sin_port = htons(nPort);if(bind(m_sock,(SOCKADDR*)&srvAddr,sizeof(SOCKADDR))== SOCKET_ERROR) {closesocket(m_sock);MessageBox("绑定套接字失败!");return FALSE;}return TRUE;}FileInfo file[10];int count = 0;CString str[10];使用异步选择模型HCURSOR CFTPServerDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}//-----------------------------启动服务----------------------//void CFTPServerDlg::OnStart(){//进入监听状态InitSocket();// 设置socket为窗口通知消息类型// 进入监听模式int m_nClient = listen(m_sock,5);if(m_nClient != 0){MessageBox("Listen error!");closesocket(m_sock);return ;}// MessageBox("Listen success!");//注册网络注册网络异步事件,m_hWnd为应用程序的主对话框或主窗口的句柄if(::WSAAsyncSelect(m_sock, m_hWnd, WM_SOCKET,FD_ACCEPT|FD_CLOSE|FD_READ|FD_WRITE)==SOCKET_ERROR) {MessageBox("WSAAsyncSelect fail!");}else{MessageBox("WSAAsyncSelect success!");}客户端连接服务void CFTPClientDlg::OnConnect(){//先获得IP控件的值BYTE nField0,nField1,nField2,nField3;m_IP.GetAddress(nField0, nField1,nField2, nField3);char buff[20];wsprintf(buff,"%d.%d.%d.%d",nField0,nField1,nField2,nField3);MessageBox(buff);//获取端口号的值int port = atoi(m_port);m_sock = socket(AF_INET,SOCK_STREAM ,0);if(INVALID_SOCKET == m_sock){// MessageBox("创建套接字失败!");return ;}// else// MessageBox("创建套接字成功!");SOCKADDR_IN srvAddr;srvAddr.sin_addr.S_un.S_addr = inet_addr(buff);srvAddr.sin_family = AF_INET;srvAddr.sin_port = htons(port);// srvAddr.sin_port = htons(8888);if(::connect(m_sock, (sockaddr*)&srvAddr, sizeof(srvAddr)) == -1) {MessageBox("连接失败");return ;}elseMessageBox("连接服务器成功");UpdateList();}上传文件//-----------------------上传文件到服务器--------------------------//void CFTPClientDlg::OnPutFile(){/* if(!UserVerfify()){MessageBox("该用户不存在");return ;}*/CFileDialog fileDlg(TRUE,NULL,NULL);if(fileDlg.DoModal() == IDCANCEL)return;CString fileName,filePath; //文件名文件路径CString fileType; //文件类型int fileLength;filePath = fileDlg.GetPathName();CFile newFile;newFile.Open(filePath, CFile::modeRead|CFile::modeReadWrite );//获取文件的名字,大小,路径fileName = newFile.GetFileName();fileName += "#"; //为了区别文件名和传输的内容fileLength = newFile.GetLength();// char *pbuf = new char[1024]; //pbuf存储文件内容// memset(pbuf,0,1024);char *pbuf = new char[MAXSIZE]; //pbuf存储文件内容memset(pbuf,0,MAXSIZE);// char pbuf[1024] = {0};// UINT nBytesRead = newFile.Read( pbuf, fileLength);UINT nBytesRead = newFile.Read( pbuf, MAXSIZE);//-------------用数字1表示上传文件名的识别码---------//// fileName = "1" + fileName;CString pbuf1;pbuf1.Format(pbuf);fileName = "1" + fileName + pbuf;// char* fName1 = (LPSTR)(LPCTSTR)fileName;// strcat(fName1,pbuf);///////////////////////此语句有问题///////////////////////////// MessageBox(fileName);// MessageBox(fName1);newFile.Close();if(nBytesRead >0)// if(send(m_sock,fName1,strlen(fName1)+1,0)==SOCKET_ERROR )if(send(m_sock,fileName,strlen(fileName)+1,0)==SOCKET_ERROR ) return;}}下载文件列表void CFTPClientDlg::OnDblclkFileList(NMHDR* pNMHDR, LRESULT* pResult) {// TODO: Add your control notification handler code hereint m_count = m_fileList.GetItemCount();if(m_count <=0){MessageBox("没有可以下载的文件列表!");return ;}用户验证BOOL CFTPClientDlg::UserVerfify(){return TRUE;}void CFTPClientDlg::OnButtonUser(){// TODO: Add your control notification handler code hereCString user;GetDlgItem(IDC_EDIT_USERNAME)->GetWindowText(user);user = "4" + user;char* p = (LPSTR)(LPCTSTR)user;MessageBox(user);if(send(m_sock,p,1024,0) ==SOCKET_ERROR){MessageBox("发送失败");return ;}char u[1024] = {0};if(recv(m_sock,u,1024,0) == SOCKET_ERROR){MessageBox("接受数据失败");return ;MessageBox(u);if( u[0] == 'T')MessageBox("用户验证成功");if( u[0] == 'F'){MessageBox("用户验证失败");m_sock = INVALID_SOCKET;}}。

相关文档
最新文档