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

合集下载

C++程序设计实验-1-7

C++程序设计实验-1-7

C++程序设计实验实验报告要求红色为实验报告必包括内容502:ftp://192.168.200.210实验一熟悉vc++开发环境和C++程序的调试过程。

一、理解体会例1-1,输入并运行。

二、参照例1-2,用结构化方法编程实现:1、根据每学年学费、专业总学分、某课程学分,计算上该课程的总花费,以及每学时,每分钟的花费。

(1学分=18学时)2、P43编程题1,2,31.输入一个三位整数,将它反向输出。

2.输入平面上某点横坐标x和纵坐标y,若该点在由图3.1表示的方块区域内,则输出1;否则,输出0。

图1.11 正方形3.输入三个整数,求出其中最小数(要求使用条件表达式)。

实验二进一步熟悉vc++开发环境和C++程序的调试过程。

一、理解体会例1-2,输入并运行。

二、参照例1-2,用面向对象方法编程实现:根据每学年学费、专业总学分、某课程学分,计算上该课程的总花费,以及每学时,每分钟的花费。

使得本校不同专业,不同课程的同学都能用它来计算。

(1学分=18学时)提示:1、定义一个类,类的数据成员包括:每学年学费、专业总学分、课程学分;类的成员函数包括:设置每学年学费、专业总学分、课程学分; 显示每学年学费、专业总学分、课程学分; 计算上某课程的总花费; 计算上某课程的每学时花费; 计算上某课程的每分钟的花费;2、说明1个或几个对象,计算并输出相应各结果。

三、P39习题1: 1.1-1.4根据需要编程上机检验其中的部分题目。

实验三1.输入某学生成绩,若成绩在85分以上输出“very good ”,若成绩在60分到85分之间输出“good ”,若成绩低于60分输出“no good ”。

2.输入三个整数,按从小到大的顺序输出它们的值。

3.输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、等腰、还是一般三角形。

4.输入百分制成绩,并把它转换成五级分制,转换公式为:⎪⎪⎪⎩⎪⎪⎪⎨⎧-----=59069607970898010090(不合格)(合格)(中等)(良好)(优秀)(级别)E D C B A grade5.编程序模拟剪刀、石头和纸游戏。

实验七 功能指令的编程实验

实验七  功能指令的编程实验

实验七功能指令的编程实验一、实验目的1、通过实验了解部分功能指令的编程与调试的方法2、进一步熟悉STEP7编程软件的使用3、熟悉数据区的下载的使用方法、特性,熟悉系统块的设置方法。

二、实验内容1、跳转与标号指令:将下面的程序下载到PLC,用状态表或程序状态功能监视各输出点和定时器的运行情况。

LD I0.0JMP 0 //I0.0为ON时跳步条件满足LD I0.4= Q0.1LD I0.1TON T37,100 //100ms定时器,设定值为10sLD I0.2TON T33,1000 //10ms定时器,设定值为10sLBL 0LD T33= Q0.0接通I0.0对应的小开关,跳步指令JMP的跳步条件满足,将跳到标号LBL 0处。

此时接通I0.4对应的小开关,观察是否能控制Q0.1。

依次检查两个定时器与跳步的关系,即在跳步条件不满足时启动某一定时器定时,在定时过程中使跳步条件满足,观察该定时器的当前值是继续变化还是保持不变,如果还在继续变化,是否还能用I0.1或I0.2来控制定时器的运行,定时时间到时定时器位是否变为ON,并在跳步区外起作用。

2、循环指令:将下面的程序下载到PLC,在状态表中监视VW100—VW108和存储累加和的VD10,将数据写入VW100—VW108,用I0.0对应的小开关启动循环指令的执行,观察求出的累加和是否正确。

//在I0.0变为ON的上升沿,求VW100—VW108中五个字的累加和。

LD I0.0EU //在I0.0变为ON的上升沿时MOVB 0,AC0 //清累加器0MOVD &VB100,AC1 //累加器1指向VB100FOR VW0,1,5 //循环开始LD SM0.0+I *AC1,AC0 //字累加+D 2,AC1 //指针AC1的值加2,指向下一个字NEXT //循环结束LD SM0.0MOVD AC0,VD103、比较指令:将下面的程序下载到PLC,运行该程序,监视T33当前值的变化情况,观察Q0.0是否能输出方波。

大学生C语言程序设计(第四版 谭洪强)实验7 答案

大学生C语言程序设计(第四版 谭洪强)实验7 答案

实验七 参考答案(参考答案)(1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。

例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。

注意:n 的值要求不大于100。

算法分析:使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。

注意:i 的倒数要表示成:1.0/i;参考子函数如下:double fun(int n){double sum=0;int i;for(i=5;i<=n;i++)if(i%5==0||i%9==0)sum=sum+1.0/i;return sum;}(2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。

n s ⋯++++⋯++++++=321132112111例如:若n 的值为11时,函数的值为1.83333算法分析:等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。

参考子函数如下:float fun(int n){float sum=1; //sum 中已经累加了第一项的值int i,m=1; //m 表示每项的分母;for(i=2;i<=n;i++){ m=m+i;sum=sum+1.0/m;}return sum;}(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。

合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。

例如,当a=45,b=12,调用该函数后,c=5241。

算法分析:对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。

c语言程序设计实验总结

c语言程序设计实验总结

C语言程序设计实验总结摘要该文档总结了我在C语言程序设计实验中的经验和教训。

通过这些实验,我对C语言编程的基本概念和技巧有了更深入的理解和掌握。

本文将综合分析每个实验的目标、方法和结果,并总结了我在实验中遇到的问题以及解决方法。

引言C语言是一种通用的高级程序设计语言,广泛应用于各个领域。

通过进行C语言程序设计实验,我们可以更好地了解C语言的语法和用法,提高我们的编程能力和问题解决能力。

本文将基于我在实验中的经验,对每个实验进行详细描述和总结。

实验一:基本输入输出程序设计实验一旨在加深对C语言程序设计的理解,熟悉基本的输入输出操作。

我们需要编写程序,实现基本的数据输入和输出,并进行简单的运算。

这个实验让我对C语言中的输入输出和基本数据类型有了更深入的理解。

实验二:条件语句和循环语句的应用实验二要求我们掌握条件语句和循环语句的使用方法,并能够通过这些语句解决实际问题。

我学会了使用if语句进行条件判断,以及使用for和while循环进行迭代操作。

通过这个实验,我可以更好地掌握程序流程控制和代码逻辑。

实验三:一维数组的应用实验三着重让我们学会使用一维数组来存储和处理大量的数据。

在这个实验中,我学会了声明和初始化数组,以及使用循环结构遍历数组元素。

这个实验对我后续的数据处理有了很大的帮助。

实验四:字符串处理实验四主要教我们如何处理字符串和字符数组。

在实验中,我学会了使用字符数组来存储和操作字符串,同时,了解了一些常见的字符串处理函数,如strlen、strcpy等。

这个实验让我更加熟悉字符串的处理方法。

实验五:结构体的应用实验五要求我们学会使用结构体类型来定义自定义数据类型,并通过结构体变量来访问结构体成员。

在实验中,我学会了如何定义和使用结构体类型,并能够通过结构体变量操作结构体成员。

结构体的灵活性和可扩展性让我在实际编程中受益匪浅。

实验六:指针的应用实验六是C语言程序设计实验中最重要的一部分。

通过实验,我对指针的概念和用法有了更深入的理解。

实验七 shell编程实验

实验七 shell编程实验

实验七 LINUX-Shell编程一.实验名称:Shell 简单编程实验和较复杂的考勤模拟shell程序设计二.实验目的:理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。

三.实验内容:考勤模拟Shell程序设计用shell设计一个模拟考勤程序,实现如下功能选择界面:1:上班签到2:下班签出3:缺勤信息查阅考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。

如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。

如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。

如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。

用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。

四.实验要求:1、掌握Shell程序的编辑、运行、调试方法2、完成实验内容要求的功能五.简单SHELL实验:请在vi中逐一编辑并执行以下6个shell脚本程序1.编写一个简单的回显用户名的shell程序。

#vi dat#!/bin/bash#filename:datecho "Mr.$USER,Today is:"echo `date`echo Wish you a lucky day!#chmod +x dat#./dat2.使用if-then语句创建简单的shell程序。

#vi bbbb#!/bin/bash#filename:bbbbecho -n "Do you want to continue: Y or N"read ANSWERif [ $ANSWER=N -o $ANSWER=n ]thenexitfi#chmod +x bbbb#./bbbb3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。

实验七 T_SQL的程序设计

实验七 T_SQL的程序设计

实验七T_SQL的程序设计一、实验目的1、掌握T_SQL的简单的变量的声明、赋值,输出语句。

2、学生能够编写简单的程序。

二、实验要求使学生了解T_SQL的编程的基础知识,掌握简单的变量的声明、赋值,输出以及流程控制语句。

三、实验环境1、操作系统:WinXp Professional2、数据库:SQL Server 2000个人版四、实验内容和步骤局部变量在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。

局部变量必须以“@”开头,而且必须先用DECLARE命令说明后才可使用。

其说明形式如下:DECLARE @变量名变量类型[@变量名变量类型…]在Transact-SQL中不能像在一般的程序语言中一样使用“变量=变量值”来给变量赋值。

必须使用SELECT或SET命令来设定变量的值,其语法如下:SELECT @局部变量=变量值或SET @局部变量=变量值DECLARE 命令用于声明一个或多个局部变量、游标变量或表变量。

在用DECLARE 命令声明之后,所有的变量都被赋予初值NULL。

需要用SELECT 或SET命令来给变量赋值。

变量类型可为系统定义的或用户定义的类型,但不能为TEXT、NTEXT、IMAGE类型。

CURSOR 指明名变量是局部的游标变量。

语法如下:DECLARE {{ @local_variable data_type }| { @cursor_variable_name CURSOR }| { table_type_definition }} [,...n]]例7-1:声明一个长度为10 个字符的变量“id”并赋值10010001declare @id char(10)这个小括号是英文的括号select @id=此处是英文的左单引号…‟10010001‟‟这两个单引号都要英文状态下的左单引号print @id在查询分析器中的结果如图7-1所示。

图7-1简单的赋值语句窗口注意:可以在Select命令查询数据时,在Select命令中直接将列值赋给变量例7-2在屏幕中输出“科技、SQL Server”字样declare @x char(4), @y char(7) 英文状态下的逗号select @x = 'SQL', @y = 'Server'print '科技'print @x +@y在查询分析器中的结果如图7-2所示。

Socket网络编程实验指导

Socket网络编程实验指导

实验七 Socket网络编程一、学时:4二、实验类型:设计性实验三、实验目的:1.熟悉VisualC++的基本操作。

2.基本了解基于对话框的windows应用程序的编写过程。

3.对于Windows Socket编程建立初步概念。

四、实验内容:利用Socket编写聊天程序。

五、实验原理:一、Windows Socket和套接口的基本概念套接口,就是一个指向传输提供者的句柄。

Win32中,套接口不同于文件描述符,所以它是一个独立的类型——SOCKET。

Windows Sockets描述定义了一个Microsoft Windows的网络编程界面,它是从Unix Socket 的基础上发展而来的,为Windows TCP/IP 提供了一个BSD型的套接字规范,除与Unix Sockets完全兼容外,还包括一个扩充文件,通过一组附加的 A PI实现Windows 式(即事件驱动)的编程风格;而Winsock则是在Microsoft Windows 中进行网络应用程序设计的接口。

Windows在Internet支配域中的TCP/IP协议定义了Winsock网络编程规范,融入了许多新特点。

使用Socket的目的是使用户在网络协议上工作而不必对该网络协议有非常深入的了解。

此外,编写的程序还可被迅速地移植到任何支持Socket的网络系统中去。

Winsock提供了一种可为指定传输协议打开、计算和关闭会话的能力。

在Windows下,TCP/IP上层模型在很大程度上与用户的Winsock应用有关;换言之,用户的Winsock应用控制了会话的方方面面,必要时,还会根据程序的需要格式化数据。

套接口有三种类型:流式套接口、数据报套接口及原始套接口。

流式套接口定义了一种可靠的面向连接的服务(利用TCP协议),实现了无差错无重复的顺序数据传输。

数据报套接口定义了一种无连接的服务(UDP 协议),数据通过相互独立的报文进行传输,是无序的,并且不保证可靠和无差错。

个人网站设计实验报告

个人网站设计实验报告

河南工程学院实习报告课程名称程序设计实训设计题目个人网站的设计与实现系(部)计算机学院班级学号姓名实习时间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社会可行性社会可行性具有比较广泛的内容,需要从政策、法律、道德、制度、等社会因素论证开发的可行性和现实性。

实验七 SOPC 基础实验

实验七  SOPC 基础实验

实验七SOPC 基础实验SOPC即System-On-a-Programmable-Chip(可编程片上系统),本章通过一系列的实验,使学习者对SOPC的应用有较为深刻的认识,并对FPGA的仿真与设计环境有深入的了解,为进一步的工作奠定基础。

7.1 SOPC概述SOPC是PLD和ASIC技术融合的结果,它是一种特殊的嵌入式系统。

首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。

由于FPGA无论在逻辑门密度还是在运行频率等诸多方面都取得了长足进步,基于FPGA的嵌入式系统成为SOPC的热点。

目前已经可以把处理器软核、ASIC硬核、数字信号处理器件以及网络控制等各种数字逻辑控制器以IP核的形式集成到FPGA芯片里,构成嵌入式系统。

7.2 基本硬件设计实验嵌入式开发环境EDK是用于设计嵌入式处理系统的集成软件,是利用嵌入式PowerPC™硬处理器核和/或Xilinx MicroBlaze™软处理器核进行Xilinx平台FPGA设计时所需的全部技术文档和IP。

EDK包括硬件部分和软件部分:1. 硬件部分:Xilinx Platform Studio (XPS)XPS是设计嵌入式处理器系统硬件部分的开发环境和用户图形界面。

可使用底层系统生成器BSB(Base System Builder )创建XPS工程,BSB能够快速和有效地创建工程设计。

Xilinx推荐使用BSB向导来创建任何新的嵌入式设计工程,BSB能够满足你所有设计的需要,并且可以帮助你节省很多时间。

使用BSB创建XPS的过程如下:创建顶层工程文件(*.xmp File)选择板型选择和配置处理器选择和配置多重I/O口添加内部的外围设备设置软件观看系统摘要页2. 软件部分:Software Development Kit (SDK)SDK是综合的开发环境,是对XPS的补充,可用C/C++进行嵌入式软件应用的编写和验证。

JAVA语言程序设计实验报告

JAVA语言程序设计实验报告

实验一、安装JDK并熟悉java的运行环境实验二、基本语法练习实验三、面向对象编程实验(4)实验四、异常处理实验实验五、小应用程序实验实验六、图形图像实验实验七、GUI(图形用户接口)实验(4)实验八、多线程实验实验九、输入输出流实验(4)实验十、数据库应用实验(4)实验一、安装JDK并熟悉java的运行环境一、实验目的熟悉JA V A的运行环境及学习简单的编程。

二、预习内容安装工具软件的基本方法。

三、实验设备与环境装有JA V A语言工具软件(Eclipse )的微机若干四、实验内容安装Eclipse及JA V A的核心编译程序J2SDK。

1、打开Eclipse的安装盘安装Eclipse。

2、在相同目录下安装J2SDK。

3、打开Eclipse软件对J2SDK文件进行配置。

4、编写一应用程序,在屏幕上显示“HELLO WORLD”和爱心标志。

Pulic class Hello{public static void main(String args[]){//在屏幕上显示“HELLO WORLD”和爱心标志}}5、编写一小程序实现上述功能:在屏幕上显示“HELLO WORLD”和爱心标志。

实验结果五、注意事项⒈认真填写实验报告⒉遵守实验室各项制度,服从实验指导教师的安排⒊按规定的时间完成实验六、说明本次实验建议学时数2学时七、实验总结与体会实验二、基本语法练习一、实验目的⒈熟悉Java的基本语法⒉编写应用程序接收命令行参数⒊编写应用程序接收用户从键盘的输入⒋掌握字符串与数组的基本方法二、预习内容java编程的基本结构三、实验设备与环境装有JA V A语言工具软件(Eclipse )的微机若干四、实验内容⒈编写一个应用程序求若干个数的平均数,原始数字要求从命令行输入。

应用程序中main方法的参数String类型的数组args能接受用户从命令行键入的参数。

(1)编辑A verage.java。

class A verage{public static void main(String args[ ]){double n,sun=0;for (int l=0;l<args.legth;l++){sum=sum+Double.valueOf(arg[l].doubleV alue();)}n=sum/args.length;System.out.println(“average=”+n);}}命令行参数:12.34 34.45 21212121注意:1)参数的个数可以利用args.length来取得。

《Python程序设计》综合实验实验报告

《Python程序设计》综合实验实验报告

《Python程序设计》综合实验实验报告
turtle.penup()
turtle.fd(20)
def drawDate(date):
for i in date:
drawDigit(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate(datetime.datetime.now().strftime('%Y%m%d'))
turtle.hideturtle()
main()
三、实验过程与结论:(经调试正确的源程序(核心部分)和程序的运行结果)
1.
2.
3.
四、实验总结:(实验中遇到的问题及解决方法,心得体会等)
通过本次实验,实现了较多的复杂的python函数,基本总结并运用了前段时间学习的所有函数,在本次实验中,解决了许多生活中的实际问题,并且做出了日常生活中所见到的数码管问题,通过本次实验,明白了python在生活中的用途,并且后面会更加努力,积极学习,在日常生活中与python相结合。

汇编语言程序设计实验七文件操作

汇编语言程序设计实验七文件操作

汇编语言程序设计实验七文件操作上海应用技术学院实验报告实验报告课程名称实验项目一、目的及要求1、掌握文件的建立、打开、关闭的方法。

2、掌握文件的读写方法。

3、建立一个文件,存放到指定的路径下,理解文件代号的作用。

4、将内存某区域AREA1中的内容写入该文件。

二、实验准备认真复习第六章。

三、实验内容1、编写程序,在D盘根目录下建立一个名为TEST1.T某T和TEST2.T某T的文件,建立成功后,在TEST1.T某T文件中写入写入入你的学号,在TEST2.T某T中写入‘Hello!’。

并且在屏幕上显示“SUCCESS”。

2、打开FILE1.T某T文本文件,将文件的内容通过显示器显示出来。

3、打开前题中的两个文件,将TEST1.T某T的内容append到TEST2.T某T,并显示TEST2.T某T。

四、源程序1.INCLUDEYLIB.HDATASEGMENTFILE1DB'D:\\TEST1.T某T',0FILE2DB'D:\\TEST2.T某T',0HANDLE1DWHANDLE2DWDTA1DBDTA2DBMESS1DB0DH,0AH,'inputte某tpleae:$'MESS2DB0DH,0AH,'FAILTOWRITE!$'SUCCESSDB0DH,0AH,'SUCCESS !$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:第1页上海应用技术学院实验报告MOVA某,DATAMOVDS,A某LEAD某,FILE1MOVC某,0MOVAH,3CHINT21HMOVHANDLE1,A某LEAD某,FILE2MOVC某,0MOVAH,3CHINT21HMOVHANDLE2,A某NE某T1:LEAD某,MESS1MOVAH,09HINT21HLEAD某,DTA1MOVB某,HANDLE1AGN1:MOVAH,01HINT21HMOVDTA1,ALMOVAH,40HMOVC某,1INT21HJCERROR1CMPDTA1,0DHJNEAGN1LEAD某,SUCCESSMOVAH,09HINT21HJMPCLOSE1AGN2:第2页上海应用技术学院实验报告LEAD某,MESS1MOVAH,09HINT21HLEAD某,DTA2MOVB某,HANDLE2NE某T: MOVAH,01HINT21HMOVDTA2,ALMOVAH,40HMOVC某,1INT21HJCERROR1CMPDTA2,0DHJNENE 某TLEAD某,SUCCESSMOVAH,09HINT21HJMPCLOSE2CLOSE1:MOVAH,3EHMOVB某,HANDLE1INT21HJMPAGN2CLOSE2:MOVAH,3EHMOVB某,HANDLE2INT21HERROR1:LEAD某,MESS2MOVAH,09HINT21HE某IT:MOVA某,4C00HINT21HCODEENDS第3页上海应用技术学院实验报告ENDSTART2.DATASEGMENTFILEDB'D:\\FILE1.T某T',0HANDLEDWIN_AREADB10DUP(),'$'LENEQU20MESS1DB0DH,0AH,'OPENFILEERROR.$’MESS2DB0DH,0AH,'READFILEERR OR.$’MESS3DB0DH,0AH,'READFILESUCCESS.$’DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATAMOVDS,A某MOVAH,3DHLEAD某,FILEMOVAL,00HINT21HJNCLEAJMPSUCD某,MESS1E某ITSTART:MOVA某,DATASUC:MOVHANDLE,A某NE某T:MOVAH,3FHMOVC某,LENLEAD某,IN_AREAMOVB某,HANDLEINT21HJCREAD_ERRCMPCMPLEAADDA某,0IN_AREA,1AHSI,IN_AREASI,A某JZREAD_FINJZREAD_FINMOVBYTEPTR[SI],'$'MOVAH,09H第4页上海应用技术学院实验报告3.DATASEGMENTFILENAME1FILENAME2DTADTA2DB'D:\\TEST1.T某T',0DB'D:\\TEST2.T某T',0;磁盘缓冲区LEAJMPD某,IN_AREANE某TINT21HREAD_FIN:MOVAH,3EHMOVB某,HANDLEINT21HLEAJMPD某,MESS3E某ITREAD_ERR:MOVAH,3EHMOVB某,HANDLEINT21HLEAD某,MESS2E某IT:MOVAH,09HINT21HMOVA某,4C00HINT21HENDSTARTCODEENDSDB256DUP()DBDWDWHANDLE1HANDLE2DONEFAIL1FAIL2FAIL3FAIL4MESS3DATA DB0DB0DH,0AH,'OpenFileError.$'DB0DH,0AH,'MoveFilePointerError.$ 'DB0DH,0AH,'ReadFileError.$'DB0DH,0AH,'WriteFileError.$'DB0DH,0A H,'readfileucce.$'ENDSCODESEGMENT第5页上海应用技术学院实验报告AGAIN:MOVAH,3FH第6页ASSUMECS:CODE,DS:DATAMOVDS,A某MOVDONE,0LEASTART:MOVA某,DATAD某,FILENAME2MOVAL,01HMOVAH,3DHINT21HJCERR11;打开不成功,转ERR11MOVHANDLE2,A某LEAD某,FILENAME1;为“读”打开文件1MOVAL,0MOVAH,3DHINT21HJCERR12MOVHANDLE1,A某MOVAH,42HMOVAL,02MOVD某,0MOVC某,0MOVB某,HANDLE2INT21HJCERR2;读文件1LEAD某,DTAMOVB某,HANDLE1MOVC某,256INT21HJCERR3CMP A某,0JNEAGA1MOVDONE,1JMPFINISH;文件结束,转FINISH上海应用技术学院实验报告AGA1:CMPCONT:PUSHA某ERR11:LEAINT21HJMPE某ITD某,FAIL1;打开文件1失败,显示信息D某,FAIL1MOVAH,09HMOVAH,40HLEAPOPD某,DTAC某;写文件失败,转ERR4;写文件2JECONTMOVDONE,1;文件结束,置完成标志A某,256MOVB某,HANDLE2INT21HJCERR4CMPMOVAH,3EH;关闭文件1MOVB某,HANDLE1INT21HMOVB某,HANDLE2INT21HJMP READF2;关闭文件2JEAGAINDONE,0FINISH:FINISH1:MOVAH,3EHERR12:LEAINT21HJMPJMPJMPMOVAH,09HFINISH1ERR2:LEAERR3:LEAERR4:LEAD某,FAIL2D某,FAIL3D某,FAIL4;移动指针失败,显示信息;读文件失败,显示信息;写文件失败,显示信息;显示出错信息DISPDISPDISP:MOVAH,09HINT21H第7页上海应用技术学院实验报告READF2:MOVAH,3DHLEAMOVAL,00HINT21HMOVHANDLE2,A某D某,DTA2MOVB某,HANDLE2MOVC某,1MOVAH,3FHINT21HJCERR3CMPCMPA某,0DTA2,1AHJECLOSEJECLOSEMOVDL,DTA2MOVAH,02HINT21HJMPONE;打开文件2D某,FILENAME2;为读而打开JMPFINISH;转FINISH,关闭文件ONE:LEACLOSE:MOVAH,3EHMOVB某,HANDLE2INT21HINT21HEND1.STARTE某IT:MOVA某,4C00HCODEENDS五、运行结果第8页上海应用技术学院实验报告.第9页上海应用技术学院实验报告2.第10页上海应用技术学院实验报告3.第11页上海应用技术学院实验报告六、上机调试时的问题和解决方法在这次实验中,文件的建立和写入时程序运行没有错误,但是在输入学号名时键盘输出一个1它却出现两个1,令人很苦恼,换了台电脑才运行正确了。

实验七二维数组程序设计

实验七二维数组程序设计

实验七二维数组程序设计实验七二维数组程序设计一、实验学时 2学时二、实验目的(一)掌握二维数组的定义、赋值及输入输出的方法;(二)掌握与二维数组有关的算法如查找、矩阵转置等;(三)掌握在程序设计中使用数组的方法。

数组是非常重要的数据类型,循环中使用数组能更好地发挥循环的作用,有些问题不使用数组难以实现。

(四)掌握在VC++环境下上机调试二维数组程序的方法,并对结果进行分析。

三、预习要求熟悉二维数组的定义、引用和相关算法(求最大值、最小值)的程序设计,同时要掌握在程序设计中利用双重循环来实现二维数组的输入和输出。

四、实验内容(一)二维数组的初始化,即给二维数组的各个元素赋初值。

下面的几个程序都能为数组元素赋值,请输入程序并运行,比较这些赋值方法有何异同。

1.在定义数组的同时对数组元素分行初始化。

/* c7-1.c *//*二维数组的初始化(分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={{1,2,3},{4,5,6}};for(i=0; i<2; i++){ for(j=0; j<3; j++)printf("%d ",a[i][j]);printf("\n");}}2.不分行的初始化。

把{ }中的数据依次赋值给数组的各个元素。

/* c7-2.c *//*二维数组的初始化(不分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={1,2,3,4,5,6};for(i=0;i<2;i++){ for(j=0;j<3;j++)printf("%d ",a[i][j]);printf("\n");}}3.为部分数组元素初始化。

如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};4.可以省略第一维的定义,但不能省略第二维的定义。

实验七 实验指导书

实验七 实验指导书

实验七基于NetBIOS的网络编程技术一、实验目的1. 了解NetBIOS协议的基本原理、应用及操作流程。

2. 了解NCB结构体中各成员变量的含义。

3. 了解其他常用NetBIOS结构体的功能和成员变量含义。

4. 了解Netbios()函数的功能、使用方法和NBTSTA T命令的功能。

5. 学习获取LANA上的所有NetBIOS名字的方法。

6. 学习获取网络适配器上的MAC地址的方法。

7. 学习在程序中实现NBTSTA T命令功能的方法。

二、实验类型设计性实验三、实验学时4学时四、实验内容1. 练习使用NBTSTA T命令。

2. 练习初始化及向本地名字表中添加名字。

3. 练习获取LANA上的所有NetBIOS名字。

4. 练习获取网络适配器上的MAC地址。

5. 练习在程序中实现NBTSTA T命令的功能。

五、实验环境Windows 操作系统、visual studio。

六、实验相关理论首先要了解NetBIOS是一种会话层协议,可以应用于TCP/IP、PPP和X.25网络。

了解NetBIOS协议最初由IBM开发,微软公司在此基础上对该协议进行了完善,并在Windows上提供了对NetBIOS协议的支持。

网络邻居功能就是基于NetBIOS协议的。

了解NCB结构体用于描述网络控制块(Network Control Block),它包含要执行的命令的信息。

在调用netbois()函数时需要传递NCB 结构体。

了解LANA_ENUM结构体中包含当前逻辑网络适配器的数量。

当一个物理网络适配器绑定到一个网络协议时,就对应一个逻辑网络适配器。

执行NCB命令NCBENUM可以向LANA_ENUM结构体中填充逻辑网络适配器的个数和逻辑网络适配器编号,此时NCB结构体中的ncb_buffer成员变量指向LANA_ENUM结构体。

了解Netbios()函数用于解释和执行指定的网络控制块(NCB)。

七、实验步骤1.使用NBTSTA T命令参照下面的步骤练习使用NBTSTA T命令。

实验七 程序设计

实验七 程序设计

实验报告(七)班级:学号:姓名:日期:【实验课程名称】数据库应用【实验项目名称】程序设计【实验目的】通过上机了解VFP程序设计语言【实验仪器及环境】Visual FoxPro6.0软件【实验内容及步骤】一、程序的建立、调试和运行:1、补充下面程序,实现输出如下图形的功能。

*********Clearst=”*****”k=3do while k>=1?space(3-k)+left(st,____)k=k-1EnddoReturn3、补充下面程序,实现如下功能:从键盘输入10个数,找出其中的最大数和最小数。

clearinput “请输入一个数:” to astore a to maxnum,minnumfor i=2 to 10input “请输入一个数:” to aif ________maxnum=aendifif _______minnum=aendifendfor?maxnum?minnum3、补充下面程序,实现如下功能:输入一个百分制成绩,要求输出成绩等级“A”“B”“C”“D”“E”。

Input “请输入学生百分制成绩:” to cjIf cj>100 or cj<0?”输入有误!”else()Endif?”成绩是”+str(cj,5,1)+”,相应等级是”+djreturn二、有如下程序zcx.prg:ClearK1=”AB”DO ZCX1?K1,K2RETURNPROCEDURE ZCX1PUBLIC K2PRIV ATE K1K1=”CD”K2=K1+”200”RETURNENDPROC执行命令do zcx后,屏幕显示结果是_____________.【实验记录】【实验小结】通过本次实验··············。

MATLAB实验七 循环结构程序设计

MATLAB实验七 循环结构程序设计

1.根据n3212222211116+⋯+++=π,求π的近似值。

当n 分别取100、1000、10000时,记过是多少? n=100程序设计: n=100; i=1:n; f=1./i.^2; x=sum(f); y=sqrt(6*x) 运行结果: x =3.1321 n=1000 程序设计: n=1000; i=1:n; f=1./i.^2; x=sum(f); y=sqrt(6*x) 运行结果: x =3.1406 n=10000 程序设计: n=1000; i=1:n; f=1./i.^2; x=sum(f); y=sqrt(6*x) 运行结果: x =3.1415 2.根据y=1+1-n 215131+⋯++,求: (1)y<3时的最大n 值。

(2)与(1)的n 值对应的y 值。

程序设计: y=1;n=1; while(y<3)n=n+2; y=y+1/n; end y=y-1/n n=(n+1)/2 运行结果: y =2.9944 n =57 3.考虑以下迭代公式:x x nn b a+=+1其中a 、b 为正的常数。

(1)编写程序求迭代的结果,迭代的终止条件为1051-+≤-x x n n ,迭代初值x=1.0,迭代次数不超过500次。

程序设计: x=1.0; a=2; b=3;x=a/(b+x); n=1;while(abs(x-(a/x-b))> 10e-5&n<=500) x=a/(b+x); n=n+1; end x n运行结果: x =0.5616 n =6(2)如果迭代过程收敛于r ,那么r 的准确值是242ab b+±-,当(a,b )的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果的准确值进行比较。

(a,b)取(1,1)程序设计:x=1.0;a=1;b=1;x=a/(b+x);n=1;while(abs(x-(a/x-b))>10e-5&n<=500)x=a/(b+x);n=n+1;endxr1=(-b+sqrt(b^2+4*a))/2r2=(-b-sqrt(b^2+4*a))/2运行结果:x =0.6181r1 =0.6180r2 =-1.6180(a,b)取(8,3)程序设计:x=1.0;a=8;b=3;x=a/(b+x);n=1;while(abs(x-(a/x-b))>10e-5&n<=50 0)x=a/(b+x);n=n+1;endxr1=(-b+sqrt(b^2+4*a))/2r2=(-b-sqrt(b^2+4*a))/2运行结果:x =1.7016r1 =1.7016r2 =-4.7016(a,b)取(10,0.1程序设计:x=1.0;a=10;b=0.1;x=a/(b+x);n=1;while(abs(x-(a/x-b))>10e-5&n<=50 0)x=a/(b+x);n=n+1;endxr1=(-b+sqrt(b^2+4*a))/2r2=(-b-sqrt(b^2+4*a))/2运行结果:x =3.1127r1 =3.1127r2 =-3.21274.已知⎪⎪⎩⎪⎪⎨⎧>+-=======---3,23,12,01,1321321nnnnfffffffnnnn求ff1001~中:(1)最大值、最小值、各数之和。

C语言程序设计实验七 数组的应用

C语言程序设计实验七   数组的应用
char s[]={‘\t’‘\n’,
‘\n’,
‘/’,
‘*’,
‘\n’,
/* (213 lines deleted)*/
0
};
/* The string is a representation of the body of this program from ‘0’to the end */
printf(“%d”,num[i]);
}
3、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你设计一个程序,返回一个3 * 5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。
4、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人之一,图林大奖得主,Ken Thompson上台的第一句话是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下:
}
(3)#include <stdio.h>
main()
{int a[2+2*4];
}
通过这一实验,可以说明什么问题?
2、运行下面的C程序,根据运行结果,可以说明什么?
#include <stdio.h>
main( )
{int num[5]={1,2,3,4,5};
int i;
for(i=0;i<=5;i++)
main( )
{ int i;
printf(“char \ts[]={\” };
for (i=0;s[i];i++)

c程序设计实验教案

c程序设计实验教案

C程序设计实验教案一、实验目的1. 掌握C程序的基本结构。

2. 学会使用C语言编写简单的输入输出程序。

3. 熟悉集成开发环境(如Visual Studio、Code::Blocks等)的使用。

二、实验内容1. C程序的基本结构(1)编写一个简单的C程序,输出“Hello, World!”。

(2)理解主函数、变量声明、函数体等基本概念。

2. 输入输出语句(1)使用scanf()函数输入用户输入的数字,并输出该数字的平方。

(2)使用printf()函数输出学生的姓名、成绩和等级。

三、实验步骤1. 打开集成开发环境,创建一个新的C项目。

2. 在主函数中编写输出“Hello, World!”的代码。

3. 编写输入用户输入的数字,并输出该数字的平方的代码。

4. 编写输出学生姓名、成绩和等级的代码。

5. 保存并运行程序,观察输出结果。

四、实验要求1. 每位同学独立完成实验,不抄袭他人代码。

2. 实验过程中,遇到问题要积极思考,可以请教同学或老师。

3. 实验完成后,对照实验目的,检查自己是否达到了预期目标。

五、实验评价1. 代码是否规范、可读性强。

2. 是否能熟练使用C语言的基本语法。

3. 是否能正确使用输入输出语句。

4. 是否能独立完成实验,解决问题。

六、实验六:控制流程(条件判断与循环)1. 实验目的理解C语言中的条件判断语句(if-else)。

掌握C语言中的循环结构(while、do-while)。

2. 实验内容编写程序实现成绩判断,根据分数输出等级(优秀、良好、及格、不及格)。

编写程序计算从1加到指定数字的和。

3. 实验步骤创建新项目,编写判断成绩的程序。

编写一个循环,用于输入分数,并判断等级。

编写另一个循环,用于计算1到指定数字的和。

运行程序,验证结果。

4. 实验要求代码应包含清晰的逻辑判断和循环控制。

要求程序能够处理用户输入的无效数据。

5. 实验评价判断语句和循环结构的正确使用。

程序对于不同输入的适应性和鲁棒性。

实验七4选1多路选择器设计实验

实验七4选1多路选择器设计实验

实验七4选1多路选择器设计实验实验七 4选1多路选择器设计实验⼀、实验⽬的进⼀步熟悉QuartusII 的VHDL ⽂本设计流程、组合电路的设计仿真和测试。

⼆、实验原理四选⼀多路选择器设计时,试分别⽤IF_THEN 语句、WHEN_ELSE 和CASE 语句的表达⽅式写出此电路的VHDL 程序,要求选择控制信号s1和s2的数据类型为STD_LOGIC;当s1=‘0’,s0=‘0’;s1=‘0’,s0=‘1’;s1=‘1’,s0=‘0’和s1=‘1’,s0=‘1’时,分别执⾏y<=a 、y<=b 、y<=c 、y<=d 。

三、程序设计其⽰意框图如下:其中输⼊数据端⼝为a 、b 、c 、d ,s1、s2为控制信号,Y 为输出。

令s0s1=“00”时,输出y=a ;令s0s1=“01”时,输出y=b ;令s0s1=“10”时,输出y=c ;令s0s1=“11’ 时,输出y=d ;a输⼊ b y数据 cds0 s1真值表如下:输⼊输出x s0 s1y a 0 0a b 0 1 b c 1 0 c d 1 1d4 选 1数据选择器四、VHDL仿真实验(1)⽤IF_THEN语句设计4选1多路选择器1.建⽴⽂件夹D:\alteral\EDAzuoye\if_mux41,启动QuartusII软件⼯作平台,打开并建⽴新⼯程管理窗⼝,完成创建⼯程。

图1 利⽤New Project Wizard创建⼯程mux412.打开⽂本编辑。

NEW→VHDL File→相应的输⼊源程序代码→存盘为mux41.vhd.。

图2 选择编辑⽂件类型源程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT(a,b,c,d:IN STD_LOGIC;s0: IN STD_LOGIC;s1: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux41;ARCHITECTURE if_mux41 OF mux41 ISSIGNAL s0s1:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN s0s1<=s0&s1PROCESS(s0s1,a,b,c,d)BEGINIF s0s1="00" THEN y<=a;ELSIF s0s1="01" THEN y<=b;ELSIF s0s1="10" THEN y<=c;ELSE y<=d;END IF;END PROCESS;END ARCHITECTURE if_mux41;3.综合运⾏,检查设计是否正确。

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

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

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

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

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

关键词:SOCKET编程,程序一.问题描述及设计思路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和。

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 C(){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;}];int count = 0;CString str[10];使用异步选择模型HCURSOR C(){return (HCURSOR) m_hIcon;}//-----------------------------启动服务----------------------//void C(){//进入监听状态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 C(){//先获得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 C(){/* if(!UserVerfify()){MessageBox("该用户不存在");return ;}*/C (TRUE,NULL,NULL);if(() == IDCANCEL)return;CString ; //文件名文件路径CString ; //文件类型int ;= ();C;new(, C );//获取文件的名字,大小,路径= new();+= "#"; //为了区别文件名和传输的内容= new();// 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 = new( pbuf, );UINT nBytesRead = new( pbuf, MAXSIZE);//-------------用数字1表示上传文件名的识别码---------//// = "1" + ;CString pbuf1;pbuf1.Format(pbuf);= "1" + + pbuf;// char* fName1 = (LPSTR)(LPCTSTR);// strcat(fName1,pbuf);///////////////////////此语句有问题///////////////////////////// MessageBox();// MessageBox(fName1);new();if(nBytesRead >0)// if(send(m_sock,fName1,strlen(fName1)+1,0)==SOCKET_ERROR ) if(send(m_sock,()+1,0)==SOCKET_ERROR )return;}}下载文件列表void C(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code hereint m_count = m_();if(m_count <=0){MessageBox("没有可以下载的文件列表!");return ;}用户验证BOOL C(){return TRUE;}void C(){// 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;}}。

相关文档
最新文档