当前位置:文档之家› 计算机网络通信程序设计__TCP文件传输程序

计算机网络通信程序设计__TCP文件传输程序

计算机网络通信程序设计__TCP文件传输程序
计算机网络通信程序设计__TCP文件传输程序

目录

一、实验名称:TCP文件传输程序 (2)

二、实验要求 (2)

三、总体规划 (2)

1、网络传输协议的选择 (2)

2、TCP协议在VC++中的实现 (2)

3、传输数据的缓冲问题 (3)

4、Socket的文件化管理 (3)

5、数据的串行化问题 (4)

6、接收数据判断是否传输完毕的方法 (4)

四、实验运行测试 (4)

五、心得体会 (7)

六、程序源代码 (7)

1、建立服务器侦听套接字的类CListenSocket的定义与实现 (7)

2、建立数据传输套接字的类CTransSocket的定义与实现 (8)

3、用于数据串行化的类CSave的定义与实现: (8)

4、主对话框CTcpDlg类的定义与实现: (9)

七、参考文献 (19)

一、实验名称:TCP文件传输程序

二、实验要求

1、设计一个应用程序,该应用程序能够实现网络中两台计算机之间传输文件。

2、一个程序既能够建立服务器又能够以终端的形式连接服务器。

3、终端或者服务器既能够发送文件又能够接收文件。

4、传送文件类型应为任何类型,文件大小为任意。

三、总体规划

1、网络传输协议的选择

在TCP/IP协议栈中,有两个高级协议是我们网络应用程序编写者应该了解的,它们"传输控制协议"(Transmission Control Protocol,简称TCP)和"用户数据报协议"(User Datagrm Protocol,简称UDP)。

TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无错的数据传输。应用程序利用TCP进行通信时,源和目标之间会建立一个虚拟连接。这个连接一但建立,两台计算机之间就可以把数据当作一个双向字节流进行交换。

UDP是无连接通信协议,UDP不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。简单地说,如果一个主机向另外一台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否已准备接收数据。如果另外一台主机收到了数据,它不会确认收到与否。

为了使两台计算机之间传输的文件数据不会丢失或发生错误,应该采用TCP协议。

2、TCP协议在VC++中的实现

在VC++中,网络协议的实现有以下几种方式:

a、采用WinSocket API函数。

API函数中提供了基本Socket的系统调用,具体实现方法为服务器端首先要调用socket()函数建立一个流式套接字,用bind()函数与本机的一个端口建立关联,继续调用listen()函数将套接字置于被动的侦听方式以监听连接,然后调用accept()函数进入等待状态之后才可以接收来自客户端的请求,一旦接收到客户端通过connect发出的连接请求,accept将返回一个新的套接字描述符。通过此套接字描述符调用send()或recv()函数即可与客户端进行数据收发。待数据传送完成,服务器客户端调用closesocket()关闭套接字。

该方法在编程过程中需要注意socket连接的整个过程,编程工作量大,编程效率低,单却可以加深对网络协议的认识。

程序流程示意图如下:

b、采用VC++中提供的MFC类,CAsyncSocket或CSocket.

两个类都对WinSocket API进行了封装,CSocket对它的封装比CAsyncSocket更深,使得对于从未接触过WinSockets API的编程程序员,也能够编写网络程序。

而本程序也是采用了CSocket类进行编程。

3、传输数据的缓冲问题

本机要传给对方的文件不是从外存直接通过网络发送的,而对方发送的数据也不是直接存入外存的。而是在内存中开辟一块缓冲区,从外存取出的文件先存入缓冲区,然后传给socket。而从socket接收的数据也是先存入缓冲区然后再存到外存。

为了解决缓冲问题,VC++添加了CArchive类,CArchive类专门用来管理一块内存单元,其大小可以自己来定义。用CArhive类既以把数据载入分配的内存区,又可以将内存区的数据存入文件。在该类的对象初始化时,需要和某个文件建立连接,这样数据就可以载入或存储了。

4、Socket的文件化管理

在大多数编程环境和编程语言中大多把socket看作一个特殊的文件,其传输过程就可以看作是对文件的读写操作。而VC++也是如此。

为了便于网络Socket的管理,在VC++中,可以对网络Socket实现文件化管理。为了实现该功能,需要用到VC++中的类CSocketFile类,该类直接派生于CFile类,使用该类可以达到对Socket文件化管理的目的。如CSocketFile类可以与CArchive类建立连接,这样就为Socket创立了一块缓冲区。应该注意的是虽然CSocketFile类直接从CFile类中派生过来,但CFile类中的一些函数CSocket是不能调用的,如果调用,系统便会返回错误。

5、数据的串行化问题

从对方的计算机传输过来的数据存入了内存,如何将这些数据写入文件呢?要发送的文件如何将其载入内存?在这个程序里我采用了数据串行化方法。也就是通过对象的Serialize()的重载来实现文件的存取。我在程序中采用了通过重载CObject类中的Serialize()的方式,具体做法是:从文件中读取文件数据存入数组,利用CArchive 的重载运算符 << ,将数组数据读入内存,而存数据过程与其相反。

6、接收数据判断是否传输完毕的方法

文件接受数据时怎样才能判断已经接受完毕呢?我采用的方法是在传输包上加标记位的方法。每发送一个数据包,总在最前面加一个位m_WEnd,如果标记为0,说明未传输完毕,以后还有数据传送过来,如果标记为1,说明已经传输完毕,可以进行一些后续工作。而另一端,每接受一个数据包,就检查以下该标记位,以确定是否传输完毕。

四、实验运行测试

1、建立服务器

2、客户端建立连接用于建立服务器

用于客户端连接

用于发送文件

用于接收文件用于显示状态

3、发送文件

a、客户端发送

b、服务器端接收

4、成功发送

5、在E:盘中查找接收到的文件

此为接收到的

文件

五、心得体会

在这五天的时间里我按照设计书的要求应用网络编程的相关知识编写了一个实现文件传输的应用程序。在编写过程中,收获颇丰。首先是对TCP协议和UDP协议有了更进一步的认识;其次在编写过程中,通过翻阅书籍学习了VC++编程和MFC的相关内容,拓展了自己的知识面,学到了很多在课堂上无法学到的东西。

当然,由于对Socket编程毕竟还不太熟练,难免会出现一些问题,现将这些问题总结如下:

1、开始时在数据串行化的设计时,直接用

CArchive类的对象 << CFile类的对象

或CArchive类的对象 >> CFile类的对象

出现错误,查阅MSDN发现不能直接用 << 运算符不能直接对CFile类的对象进行操作。

2、接收端操作同数据的传输必须同步,即必须确保在接收数据时,应确保数据已经传送到了接收端,也就是防止因为数据为传送过来而导致的接收失败。为了防止接收失败而导致数据丢失,应反复接收,直到接收数目符合为止。

如:i = 0;

while(i < m_WNum)

i = ar.Read(&Bbuf[i], m_WNum - i) + i;

所幸的是这些问题都在参考资料和老师的帮助下得到了解决。最终圆满的完成了课程设计任务书的要求。自身分析问题和解决问题的能力也得到了提升,为以后的实验设计奠定了良好的基础。在这里要感谢老师对我的悉心指导,您辛苦了!

六、程序源代码

1、建立服务器侦听套接字的类CListenSocket的定义与实现

定义部分:

class CListenSocket : public Csocket//该类用于服务器端的侦听

{

public:

C TcpDlg *m_pSendDlg; //加该成员为了调用其内的函数。

public:

C ListenSocket(CTcpDlg *pSendDlg);

v irtual ~CListenSocket();

public:

v irtual void OnAccept(int nErrorCode);

};

实现部分:

CListenSocket::CListenSocket(CTcpDlg *pSendDlg)

{

m_pSendDlg = pSendDlg;

}

void CListenSocket::OnAccept(int nErrorCode) //当服务器端收到客

//户端的连接请求时执行的代码。

{

C Socket::OnAccept(nErrorCode);

m_pSendDlg->ProcessAccept();

}

2、建立数据传输套接字的类CTransSocket的定义与实现

定义部分:

class CTransSocket : public Csocket//该类用于两端的连接和传输

{

public:

C TcpDlg *m_pSendDlg;

public:

C TransSocket(CTcpDlg *pSendDlg);

v irtual ~CTransSocket();

public:

v irtual void OnReceive(int nErrorCode);

};

实现部分:

CTransSocket::CTransSocket(CTcpDlg *pSendDlg)

{

m_pSendDlg = pSendDlg;

}

void CTransSocket::OnReceive(int nErrorCode) //当收到发送

//端发送的数据时执行的代码。

{ CSocket::OnReceive(nErrorCode);

m_pSendDlg->SetTip(CString("有数据传送到"));

m_pSendDlg->SendOrRecv = 2;

m_pSendDlg->JudgeButton();

}

3、用于数据串行化的类CSave的定义与实现:

定义部分:

class CSave : public CObject

{

public:

WORD m_WEnd; //标记数据传输是否结束,结束-0 未结束-1 意外-2 WORD m_WNum; //标记Bbuf[]中元素的个数

BYTE Bbuf[1024];

public:

CSave();

virtual ~CSave();

void Init();

virtual void Serialize(CArchive &ar);

};

实现部分:

CSave::CSave()

{

Init();

}

void CSave::Init() //重新定义一个Init()的原因是不仅在CSave类初始{ //化时将类内各变量值初始状态,还可以在以后也可int i; //以。

m_WEnd = 1; //结束标志

for(i = 0; i < 1024; i++)

Bbuf[i] = 0;

}

void CSave::Serialize(CArchive &ar) //数据串行化

{

unsigned int i = 0;

if(ar.IsStoring())

{

ar << m_WEnd;

ar << m_WNum;

for(i = 0; i < m_WNum; i++) //数组中的值发送出

ar << Bbuf[i];

}

else

{

i = 0;

ar >> m_WEnd;

ar >> m_WNum;

while(i < m_WNum) //收到的值存入数组

i = ar.Read(&Bbuf[i], m_WNum - i) + i;

}

}

4、主对话框CTcpDlg类的定义与实现:

定义部分:

class CTcpDlg : public CDialog

{

系统定义部分省略...

public:

CListenSocket *m_pListenSocket;

CTransSocket *m_pTransSocket;

CSocketFile *m_pFile; //用于和CSocket连接

CFile *m_pBasicFile;

CArchive *m_pArchiveIn; //CSocket的两个缓冲区

CArchive *m_pArchiveOut;

CString m_strFileName; //用于存储文件名

int SendOrRecv; //send 1; receive 2; nothing 0;

int ServerClient; //Server-1,Client-2

int iEnd; //用于控制意外中断发送信号

int m_nPort;

void ProcessAccept();

void ProcessRecv();

void InitConnection();

BOOL ConnectSocket(CString strIP);

void SendFile(CString strFileName, WORD WEnd = 1);

int ReceiveFile(CFile *m_pBasicFile,CString strFileName, DWORD *wNum);

void JudgeButton();

void SetTip(CString str);

public:

CTcpDlg(CWnd* pParent = NULL); // standard constructor

virtual ~CTcpDlg();

系统控件变量定义省略...

系统定义函数省略...

protected:

afx_msg void OnBUTTONListen();

afx_msg void OnBUTTONStop();

afx_msg void OnBUTTONConnect();

afx_msg void OnBUTTONCut();

afx_msg void OnBUTTONBrowser();

afx_msg void OnBUTTONSend();

afx_msg void OnBUTTONSave();

afx_msg void OnBUTTONRecv();

};

实现部分:

系统定义函数实现省略...

CTcpDlg::CTcpDlg(CWnd* pParent /*=NULL*/)

: CDialog(CTcpDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_pAutoProxy = NULL;

m_pListenSocket = NULL;

m_pTransSocket = NULL;

m_pFile = NULL;

m_pArchiveIn = NULL;

m_pArchiveOut = NULL;

m_strFileName.Empty();

m_pBasicFile = NULL;

SendOrRecv = 0;

iEnd = 1;

}

CTcpDlg::~CTcpDlg()

{

计算机程序设计实践

江苏科技大学 课程实践报告 设计题目: 计算机程序设计实践(VC++) 设计时间: 2015. 3.9 至2015. 3.16 学院: 数理学院 专业班级: 13级信息与计算科学1班 学生姓名: 陈明敏学号1340501101 指导老师: 华伟 2015年5月1日

一、 实践任务 任务一:试建立一个类SP ,求(,)123k k k k f n k n =++++ ,另有辅助函数power ()用 于求 n m 。具体要求如下。 (1)私有数据成员。 Int n ,k :存放公式中n 和k 的值。 (2)公有成员函数。 ①SP(int n1,int k1):构造函数,初始化成员数据n 和k 。 ②int power(int m,int n):求n m 。 ③int fun():求公式的累加和。 ④void show():输出求得的结果。 二、源程序清单 #include class SP{ private: int n,k; public: SP(int n1,int k1); int power(int m,int n); int fun(); void show (); }; SP::SP(int n1,int k1){ n=n1; k=k1; } int SP::power(int m,int n){ int a=m; for(int i=1;i

计算机程序设计训练(东北石油大学)

东北石油大学 计算机程序设计训练 2014年6月28日

程序设计训练任务书 课程C计算机程序设计训练 专业测控姓名*** 学号*** 主要内容: 【程序 1】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 【程序2】题目:文件操作,要求以二进制方式打开命令行参数中指定的文件,并将二进制方式读取的文件数据(0和1)存储为文本文件,即文件内容是ASCII的0与1方式。 【程序 3】题目:空间直角坐标系变换程序,在空间直角坐标系中,如果保持原点不动,x轴偏转α度,y 轴偏转β度,求z轴偏转的角度以及z轴在原坐标系中XY平面的投影. 【程序 4】题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 【程序 5】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。【程序 6】题目:要求设计一个程序对从键盘输入一个字符串str,str长度小于99,然后在屏幕打印出一个新字符串,新字符串的构成为AABB10strXCCDD,其中AABB和CCDD是开始标志和结束标志,第5、6位是字符串str的长度,X是整个字符串的逻辑异或结果。 【程序 7】题目:要求设计一个程序提取程序6的输出字符串中的内容,并打印到屏幕上。 【程序 8】题目:使用递归方式求解hanoi塔问题。 【程序 9】题目:设计两个链表,分别输入2个和3个数据,然后连接两个链表,采用搜索的方式找出链表中最大值与最小值。 【程序10】题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 【程序11】题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。 【程序12】题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。 基本要求: 1.至少完成10个程序,程序运行结果正确 2.程序可读性好,要有注释 3.所有程序完成后,统一保存为.c文件,用winrar压缩后发送到邮箱dqzly@https://www.doczj.com/doc/8117029830.html, 4.撰写训练报告,7月10日交到自动化馆104 完成期限201*年7月1**号 指导教师*** 201*年6 月**日

程序设计基础期末复习汇总.doc

《程序设计基础》期末复习 考试题型和分值。 一、单选题(20小题,每题2分) 二、填空题(共20题,计20分) 三、编程填空题(给出程序的输出结果,共5题,14分) 四、读程序题(补充程序,共2小题,,共26分) 程序练习: 1. 输出1-10之间所有的偶数和它们的平方。 2. 输出所有的水仙花数。 3. 从键盘输入一行字符,统计其中有多少个单词。假设单词之间是以空格分开。 4. 编程先由计算机“想” 一个1?100之间的数请人猜,如果人猜对了,贝U 结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。 5. 编写程序,要求在main函数接受一个整型变量,将其作为参数传入IsPrime 函数中,IsPrime函数根据传入的值确定返回值,如果<2,返回0;如果不是素数,返回1; 如果是素数,返回2O主函数根据返回值输出相应的提示信息:输入不合法,不是素数,是素数。 6. 编写程序:给学生出一道加法运算题,然后判断学生输入的答案对错与否。 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示 “Right!,”否则提示重做,显示“ Not correct! Try again!",重复要求输入答案,直到输入结果正确,程序结束。

要求:用Add函数来进行两个整数的加法运算;用Print函数判断输入的答案正确与否;用main 函数输入两个相加的数和学生的答案,然后调用Add函数和Print函数判进行判断和显示输出。 7. 利用指针编写两个整数交换的函数。 8. 从10个元素的数组中找出最大值和最小值,并记录最大值和最小值对应的元 素的下标位置。 9. 给定40个数,按照要求进行排序并输出排序的结果。 程序设计ABC 1. 程序运行的方式分为哪两种?(编译运行和解释运行) 2 .什么叫编译器,其功能是什么?(把程序设计语言转换成目标代码的软件称为编译器) 数据类型、运算符与表达式 4.C程序的特点? 函数是C程序的基本单位。一个C程序有且仅有一个main函数(主函数), 总是从main函数开始执行,在main函数中结束,与其位置无关; 函数由函数头和函数体组成 C程序的书写格式:C语句都以分号结束;允许一行多句,但最好一行一 句并按照锯齿形(缩进式)书写,提高可读性和可测试性;适当使用注释 (注释中的语句不参与编译,不能发现其中的拼写错误)。 2. C语言标识符的命名规则,会判断哪些是合法的哪些不合法。

Linux下基于socket的文件传输程序设计课程报告

Linux高级开发 课程设计报告 课程设计题目:Linux下基于socket的文件传输程序设计 学院:________信息工程学院_____________ 专业班级:________网络工程_____________ 年级:________级_____________________ 姓名:____________________________ 学号:________201______________ 完成时间:___2015___年____12___月_____25__日 成绩:__________________________________ 指导教师:____________________________

项目分 值 优秀 (100>x≥90) 良好 (90>x≥80) 中等 (80>x≥70) 及格 (70>x≥60) 不及格 (x<60) 评 分参考标准参考标准参考标准参考标准参考标准 学习态度15 学习态度认 真,科学作风 严谨,严格保 证设计时间并 按任务书中规 定的进度开展 各项工作 学习态度比较 认真,科学作 风良好,能按 期圆满完成任 务书规定的任 务 学习态度 尚好,遵守 组织纪律, 基本保证 设计时间, 按期完成 各项工作 学习态度尚 可,能遵守组 织纪律,能按 期完成任务 学习马虎, 纪律涣散, 工作作风 不严谨,不 能保证设 计时间和 进度 技术水平 与实际能力25 设计合理、理 论分析与计算 正确,实验数 据准确,有很 强的实际动手 能力、经济分 析能力和计算 机应用能力, 文献查阅能力 强、引用合理、 调查调研非常 合理、可信 设计合理、理 论分析与计算 正确,实验数 据比较准确, 有较强的实际 动手能力、经 济分析能力和 计算机应用能 力,文献引用、 调查调研比较 合理、可信 设计合理, 理论分析 与计算基 本正确,实 验数据比 较准确,有 一定的实 际动手能 力,主要文 献引用、调 查调研比 较可信 设计基本合 理,理论分析 与计算无大 错,实验数据 无大错 设计不合 理,理论分 析与计算 有原则错 误,实验数 据不可靠, 实际动手 能力差,文 献引用、调 查调研有 较大的问 题 创新10 有重大改进或 独特见解,有 一定实用价值 有较大改进或 新颖的见解, 实用性尚可 有一定改 进或新的 见解 有一定见解观念陈旧 论文(计算 书、图纸)撰写质量50 结构严谨,逻 辑性强,层次 清晰,语言准 确,文字流畅, 完全符合规范 化要求,书写 工整或用计算 机打印成文; 图纸非常工 整、清晰 结构合理,符 合逻辑,文章 层次分明,语 言准确,文字 流畅,符合规 范化要求,书 写工整或用计 算机打印成 文;图纸工整、 清晰 结构合理, 层次较为 分明,文理 通顺,基本 达到规范 化要求,书 写比较工 整;图纸比 较工整、清 晰 结构基本合 理,逻辑基本 清楚,文字尚 通顺,勉强达 到规范化要 求;图纸比较 工整 内容空泛, 结构混乱, 文字表达 不清,错别 字较多,达 不到规范 化要求;图 纸不工整 或不清晰 指导教师评定成绩: 指导教师签名:年月日

计算机程序设计员理论试题库

计算机程序设计员高级理论知识训练题计算机程序设计员高级理论知识训练题选择一个正确的答案,一、单项选择(选择一个正确的答案,将相应的字母填入题内的括号中。) 单项选择选择一个正确的答案将相应的字母填入题内的括号中。1. 计算机程序设计员在工作中不应该( )。A、谦虚谨慎、胸襟宽阔B、严格按照工作程序及相关文档的规范开展工作C、善于表现自己的成绩,力求突出自我D、时刻保持朝气和活力2. 遵纪守法指的是计算机程序设计员要遵守职业纪律和与职业相关的( )。A、刑法、民法、劳动法B、保密法、劳动法等其他法律C、法律、法规、商业道德D、道德规范3. 计算机程序员掌握着用户软件系统的重要信息,因此要求程序设计人员必须具备( )的职业道德。A、严谨务实B、工作耐心C、谦虚谨慎D、严守机密4. 计算机程序设计员在工作中要从客观实际出发,不懂不装懂,多向用户学习,切忌( )。A、服务第一B、一切向钱看C、客户第一D、主观臆断5. 从( )的角度看,计算机程序设计员必须了解和熟悉与自身职业有直接或间接关系的领域中取得的新成果,才能更好地掌握本职业的各项技能。A、管理B、发展C、效益D、业务 6. 在多个层次的存储器系统中,上一层的存储器较下一层存储器的容量小,( )。A、失效率高B、离CPU 远C、速度快D、成本低7. 按存储的工作方式分类,存储器可分为( )。A、软盘、硬盘、光盘B、半导体存储器、磁表面存储器、光存储器C、RAM、ROM、BIOS D、随机读写存储器、顺序读写存储器、只读存储器8. 按( )来划分,总线可以分为8 位总线、16 位总线、32 位总线等。A、总线所处的层次B、用途C、数据线的宽度D、信息的传输方向9. ( )翻译程序在语言程序翻译时,读入一句源程序,则翻译一句,执行一句,反反复复直到最终完成。A、编译型B、过程型C、解释型D、脱机型10. 在缓冲技术中,( )是以专用的寄存器作为缓冲器,费用较高。A、软件缓冲B、硬件缓冲C、多重缓冲D、单缓冲11. 在文件结构中,( )对用户是透明的。A、字符型文件结构B、字节型文件结构C、逻辑的文件结构D、物理的文件结构12. 在( )过程中,用户不能进行任何干预,一切由系统自动进行。A、联机作业控制B、脱机作业控制C、动态作业控制D、实时作业控制13. 数据模型按不同的应用层次可划分为两类:一类是概念数据模型,另一类是( )。A、概念模型B、逻辑模型C、实体模型D、物理模型14. 在数据库的数据模型中,( )规定了如何用基本的数据项组织成较大的数据单位,以描述实体类型和实体之间联系。1 A、数据结构B、记录结构C、数据操作D、库结构15. 数据库系统是一个复杂的系统,是存储介质、处理对象和管理系统的集合体,由数据库、硬件支持系统、软件支持系统和( )四部分组成。A、数据库管理员B、数据模型描述C、操作系统D、应用系统16. JavaScript 是一种安全语言,它( )。A、允许访问本地的硬盘B、可以将数据存入到服务器上C、能通过浏览器实现信息浏览或动态交互D、允许对网络文档进行修改和删除17. 组件技术是分布式( )的技术。 A、面向过程 B、面向对象 C、面向结构 D、模块化18. 在需求分析阶段,确定系统的功能要求,就是确定( )。A、要解决的问题是什么B、项目的验收标准C、系统的规模D、系统必须完成的所有功能19. 在模块划分中,类是( )的模块。A、面向功能B、面向过程C、面向对象D、面向结构20. ( )主要是指程序的运行效率和存储效率两个方面。A、编码风格B、代码调试C、软件测试D、程序性能优化21. 在软件测试方法中,白盒测试法把程序看成是一个透明的盒子,以程序的内部结构和( )为依据,对程序的所有逻辑路径进行细致的检查。A、功能B、算法C、外部结构D、处理过程22. 软件管理按时间可划分为( )和使用维护管理。A、软件设计管理B、生产管理C、开发进度管理D、技术管理23. 在软件质量特性中,软件的( )是指在规定条件下,在规定的时间内,不引起系统失效的概率。A、可靠性B、功能度C、易使用性D、时间经济性24. ( )是网络的核心,它的主要任务是为网络上的其它机器提供服务。 A、网络协议 B、工作站 C、服务器 D、客户机25. 域名服务器上运行着一个数据库系统,数据库中保存的是域名地址与( )的对应。A、MAC 地址B、URL 地址C、TCP 地址D、IP 地址26. 在Web 客户端存在的主要安全威胁是,Web 浏览器( )。A、用户名和口令都是原样传送B、拥有不安全的程序C、支持下载嵌在HTML 页面中的脚本程序并在浏览器中执行D、不支持任何加密传输方案27. 网络级防火墙的一个基本例子就是位于Internet 和( )之间的路由器,它根据数据包的来源、目的地址和端口来过滤。 A、外部网络 B、内部网络 C、以太网 D、服务器28. DES(数据加密标准)中,D 代表的英文单词是( )。 A、Data B、Driver C、Direct D、Database 29. 著作权是指作者及其他著作权人对其文学、艺术、科学作品所享有的人身权利和( )的总称。A、署名权利B、发行权利C、名誉权利D、财产权利30. 专利权人具有( )和接受推广应用的义务。A、缴纳年费B、转让专利C、许可他人实施其专利D、实施其专利 2 31. 商标是指商品的生产者、经营者或( )的提供者用以标明自己所生产、经营的商品或提供的服务与其他人

VFP程序设计题汇总

一.程序设计题汇总 1.通过输入学生的学号(字符型)查找学生,若找到该学生,先输出学号与姓名,然后输出“英语”和“计算机实用技术”成绩。若找不到该学生输出“查无该生”。(设表文件“学生信息”满足题目需要) set talk off clear use 学生信息 accept "请输入学生学号:" to xh locate for 学号==xh if !eof() 学号,姓名 list fiel 英语,计算机实用技术 for 学号=xh else "查无该生" endif use 2.输入学生成绩,并要求:成绩小于60分时,输出“不及格”;成绩在60~69分之间时,输出“及格”;成绩在70~79之间时,输出“中”;当成绩在80~89之间时,输出“良”;当成绩在90~100之间时,输出“优”。 set talk off

clear input "请输入成绩: " to cj do case case cj>=90 "优秀" case cj >=80 "良好" case cj >=70 "中" case cj >=60 "及格" case cj<60 "不及格" otherwise "数据有误" endcase set talk on 3.按学号在“学生信息.dbf”文件中查找并显示指定的记录。要求可以重复查询,找到则显示该生的记录,找不到则提示“查无此人!”,按非“Y”、“y”可结束查询。

SET TALK OFF CLEAR USE 学生信息 &&设当前目录下表文件存在 ACCEPT '学号查询吗(Y/N)' TO cx &&循环条件的初始化 DO WHILE cx='Y'.='y' &&大小写均可执行查询 CLEAR ACCEPT '请输入学号:' TO xh LOCATE ALL FOR 学号=xh &&此处ALL可以缺省,默认为在全部记录查找。 IF EOF() '查无此人!' WAIT ELSE DISPLAY ENDIF ACCEPT '继续按学号查询吗(Y/N)' TO cx &&修改循环条件 ENDDO SET TALK ON USE

远程文件传输实验报告

《面向对象程序设计实践教程》 课题设计报告 课题名称:远程文件传输程序设计 专业:计算机科学与技术 班级: 姓名: 学号: 指导老师: 日期: 仰恩大学计算机系

一、 课程序设计目的 (1)掌握基于TCP 的网络程序设计; (2)掌握基于UDP 的网络程序设计; (3)编写远程文件传输程序,实现在二台远程主机之间传输任意文件。 二、 开发环境 (1)系统环境:Windows XP ,Windows 2003 Server (2)编程环境:JDK1.5,JCreator ,NetBeans 等 三、 实现过程 (1)Java 网络编程基础知识介绍 1、编写基于TCP 协议的网络程序,Socket 通信的一般过程: 创建ServerSocket 等待客户端连接请求 否 创建输入/出流创建输入/出流成功 关闭Socket 关闭Socket 创建Socket 对象 连接请求 N 抛出异常 服务器端 客户端 创建Socket 对象是 2、编写基于UDP 协议的网络编程的实践过程: (a )发送过程 发送数据前,先生成一个DatagramPacket 对象;该对象包括需 要发送的数据和完整的目的地址。 发送数据是通过DatagramSocket 的方法send()实现的。 (b )接收过程 接收数据前,生成一个DatagramPacket 对象,给出接收数据 的缓冲区及其长度;

调用DatagramSocket 的方法receive()等待数据报的到来,receive()将一直等待,直到收到一个数据报为止。 (2)远程文件传输概要设计(基于socket 编程) 1、功能描述:编写一个基于socket 编程的远程文件传输程序,在服务 端开启时客户端可以发送文件,而服务端可以接收并保存到要保存的地方。 2、总体流程图 发送方是否接收接收方发送文件名 给接收方 接收文件名,并显示是否接收 发送“true ”接收信息 开始发送文件 开始接收文件 A.xls B.xls 否 否 是是1 2 3、发送方流程图 是否到文件末 从文件读数据 开始 结束 是 否 关闭socket 发送数据 4、接收方流程图 是否到文件末 接收数据 开始 结束 是 否 关闭socket 向目标文件 写数据

计算机程序设计(C)综合实践

计算机程序设计(C)综合 实践 设计报告 学院:电子通信与物理学院 设计名称:职工信息管理系统 专业班级:电子信息科学与技术14-2 学生:本良 学号: 201401100211 组号: 140203 指导教师:宋戈 完成时间: 2015年 7月23日

目录 第1部分实训题目与要求 (2) 1. 问题提出 (2) 2. 功能要求 (2) 3. 任务分工 (2) 第2部分设计实训题目功能......................................................................... . (3) 1. 总体设 计...................................................................... (3) 2. 数据结 构...................................................................... (4) 3. 程序设 计...................................................................... (5) 4. 测试与调 试......................................................................

(8) 第3部分实训总结......................................................................... . (12) 1. 个人总 结...................................................................... (12) 2. 结束 语...................................................................... (12) 第4部分参考文献......................................................................... . (13) 《C程序设计综合实践》评分表......................................................................... (14)

最新C程序设计试题汇编汇总

C程序设计试题汇编

C程序设计试题汇编 1.3以下叙述正确的是______ A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面 2.2若x、y、j和k都是int 型变量,则计算下面表达式后,x的值为______ A) 7 B)16 C)32 D)52 答案:C 2.6下面四个选项中,均是不合法的用户标识符的选项是______ A)A B)float C)b-a D)_123 P_0 la0 goto temp Do _A int INT 2.23以下不正确的叙述是______ A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b 中的值不变 D)当键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输 入实型数值 2.30若有说明语句:char c=’\72’;则变量c______ A)包含1个字符 B)包含2个字符 C)包含3个字符

D)说明不合法,c的值不确定 2.37在C语言中,char型数据在内存中的存储形式是______ A)补码 B)反码 C)原码 D)ASCII码 3.2以下程序的输出结果是______.(注:︼表示空格) main() { printf(“\n*s1=%15s*”,”chinabeijing”); printf(“n*s2=%-5s*”,”chi”); } A)*s1=chinabeijing︼︼︼ * B)*s1=chinabeijing︼︼︼ * *s2= * * chi * *s2=chi ︼︼︼ * C)*s1=*︼︼chinabeijing * D)*s1=︼︼︼chinabeijing * *s2=︼︼chi * *s2=chi︼︼ 3.11已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列 开始输入数据时,正确的数据输入方式是______(注:表示回车) int a1,a2; char c1,c2; scanf(“%d%d”,&a1,&a2); scanf(“%c%c”,&c1,&c2); A)1020AB B)10︼20 AB C)10︼︼20︼︼AB D)10︼20AB 3.15根据题目中已给出的数据的输入形式和输出形式,程序中输入输出语句的正确内容是 ______ main() { int x; float y; prinf(“enter x,y:”) 输入语句

【Java基于Socket文件传输示例】网络编程

Java基于Socket文件传输示例 最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解。在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加快传输的速度。废话少说,先来看服务器端的程序。 1.服务器端 package sterning; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import https://www.doczj.com/doc/8117029830.html,.ServerSocket; import https://www.doczj.com/doc/8117029830.html,.Socket; public class ServerTest { int port = 8821; void start() { Socket s = null; try { ServerSocket ss = new ServerSocket(port); while (true) { // 选择进行传输的文件 String filePath = "D:\\lib.rar"; File fi = new File(filePath);

System.out.println("文件长度:" + (int) fi.length()); // public Socket accept() throws // IOException侦听并接受到此套接字的连接。此方法在进行连接之前一直阻塞。 s = ss.accept(); System.out.println("建立socket链接"); DataInputStream dis = new DataInputStream(new BufferedIn putStream(s.getInputStream())); dis.readByte(); DataInputStream fis = new DataInputStream(new BufferedIn putStream(new FileInputStream(filePath))); DataOutputStream ps = new DataOutputStream(s.getOutput Stream()); //将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名的处理,还需要加工,具体可以参见Think In Java 4th里有现成的代码。 ps.writeUTF(fi.getName()); ps.flush(); ps.writeLong((long) fi.length()); ps.flush(); int bufferSize = 8192; byte[] buf = new byte[bufferSize]; while (true) { int read = 0; if (fis != null) { read = fis.read(buf);

大学生计算机编程实训心得领悟.doc

大学生计算机编程实训心得体会 编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。分享,欢迎阅读! 大学生计算机编程实训心得体会一 目前在国内制造业对数控加工高速增长的需求形势下,数控编程技术人才出现了严重短缺,数控编程技术已成为就业市场上的需求热点。以市场为导向的职业教育不断开辟这一领域的新课题,在传统职业的知识和技术上溶入了数字化信息的新技术、新知识、新工艺。国家大力发展职业教育,大力进行职教师资培训。以骨干教师为重点的培养培训活动在全国各个重点建设职教师资基地纷纷开展。我就是2007年第二批次国家级骨干教师培训的学员,培训地在济南数控编程培训学校,专业是数控加工技术。在济南学习期间,对于数控机床编程技术的学习心得写下来跟朋友们一起探讨。 一、学好数控编程技术需要具备以下几个基本条件: (1)具有基本的学习资质,即学员具备一定的学习能力和预备知识。 (2)有条件选择好的培训机构和培训教材。 (3)在实践中积累经验。

二、学习数控编程技术,要求学员首先掌握一定的预备知识和技能,包括: (1)基本的机械制图基础。 (2)基本的机械加工常识。 (3)机加工工艺基础。 (4)基本的三维造型技能。 三、选择培训教材应考虑的因素包括: (1)教材的内容应适合于实际编程应用的要求,以目前广泛采用的基于CADCAM软件的交互式图形编程技术为主要内容。在讲授软件操作、编程方法等实用技术的同时也应包含一定的基础知识,使读者知其然更知其所以然。 (2)教材的结构。数控编程技术的学习是一个分阶段不断提高的过程,因此教材的内容应按不同的学习阶段进行合理的分配。同时,从应用角度对内容进行系统的归纳和分类,便于读者从整体上理解和记忆。 四、学习方法与技巧 同其他知识和技能的学习一样,掌握正确的学习方法对提高数控编程技术的学习效率和质量起着十分重要的作用。下面是几点建议:

《计算机程序设计基础》课后练习题参考标准答案

《计算机程序设计基础》课后练习题1 一.判断题 (1)(错)事件过程由某个用户事件或系统事件触发执行,但不能被其他过程调用。 (2)(错)若X=2, Y=5,则表达式 Y-2>X AND X+2>Y 的结果为:True。 (3)(错)常量是指在程序运行过程中其值可以改变的那些量。 (4)(错,timer没有)VB工具箱中的所有控件都具有宽度(Width)和高度(Height)属 性。 (5)(错)定义变量:Dim max,min as Single , 则max 和 min 的数据类型均为Single。 (6)(对)如果创建的菜单项的标题是一个减号“-”,则该菜单项显示为一条分隔线。 (7)(错)标准模块文件的扩展名是“*.VBP”。 (8)(错,都不能)定时器控件可以响应Click事件,但不能响应DbClick事件。 (9)(错)在默认情况下,数组下标下界的缺省值为1。 (10)(对)在使用字体对话框时,需要对其Flags属性先进行相应设置。 二.单选题 (11)在Visual Basic中,表示鼠标单击事件的是 C 。 A)Activate B)DoubleClick C)Click D)MouseDown (12)用于设置计时器时间间隔的属性是 A 。 A)Interval B)Name C)Left D)Top (13)函数Int(10*Rnd)是在 D 范围内的整数。 A)[1,10] B)[1,10] C) [0,9) D)[0,9] (14)Select case语句结构的结尾应使用 D 。 A)End B) End Case C) End Sub D) End Select (15)改变了容器的坐标系后,该容器的 A 属性值不会改变。 A)left B)scaleleft C)scaletop D)scalewidth (16)执行下列语句后,列表框中各表项顺序为 D List1.Clear For i=1 to 4 : List1.AddItem i-1,0 :Next i A)B)C)D) (17)输入对话框InputBox的返回值的类型是 A 。

编程入门基础知识总结

编程入门基础知识总结 基本知识 程序= 算法+ 数据结构,算法是对操作的描述,数据结构是对数据的描述。 伪代码:pseudo code 程序一般包括: (1)预处理命令:#include等 (2)全局声明部分 (3)函数:函数首部(声明)、函数体(局部声明+执行部分) 程序执行过程 源程序-->编译成目标程序obj-->连接目标程序成可执行文件 类:数据成员+成员函数 命名空间 实际上就是一个由程序设计者命名的内存区域。程序员可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其它全局实体分隔开,解决名字冲突,防止全局命名空间污染。 C++库的所有标识符(标准头文件中函数、类、对象、类模版)都是在std命名空间定义的 A 的ASCII码值65 a 的97 1.数据类型 ?基本类型:整型、浮点型、字符型、布尔型 ?构造类型:枚举、数组、结构体类型(struct)、公用体(union)、类类型 ?指针类型 ?引用类型 ?空类型:null int 4 unsigned int 4 short int 2 unsigned short int 2 long int 4 unsigned long int 4 char 1 uchar 1 float 4 double 8 long double 8 无符号:不用保存符号位,故比有符号多了一位 有符号:数值用补码存放(无论正负),最高位为符号位 VC中,long double与double字节数相同,故long double是无用的 GCC中,long double则有12个字节 无负值的量可以定义为unsigned int,如年龄、学号等,以增大存储范围。 short int,long int,unsigned int这些类型后面的int可以省略 整型表示: 十进制,后面加L 或l 八进制,前面加0 十六进制,前面加0x 浮点数表示: 默认为双精度型double 后面加f 或F 则为单精度float 后面加l 或L 则为长精度型long double 指数形式

计算机网络文件传输及管理系统课程设计报告

目录 摘要 (3) 第一章课程设计要求 (4) 一、设计任务 (3) 1.1.1 课程设计内容 (3) 1.1.2、课程设计的基本要求 (3) 二、设计基本思路及相关理论 (3) 1.2.1、TCP/IP协议 (3) 1.2.2、客户机/服务器模型 (4) 1.2.3、设计基本思路 (4) 第二章设计概要 (5) 2.1 功能设计 (5) 2.2 程序系统功能模块 (6) 2.3 功能分析 (7) 2.3.1 功能流程图: (7) 2.3.2 程序主要功能说明 (7) 第三章调试分析与测试结果 (23) 3.1服务器端与客户端 (23) 3.2文件管理的过程 (26) 第四章设计总结 (28) 参考文献 (28) 课程设计评分表 (30)

摘要 网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。 Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。 Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 关键字:Socket、文件传输、多线程

计算机编程实习周记

计算机编程实习周记 实习周记一 到金山实习已经一周了,这一周主要任务是学习COM 技术,以及理解初期产品DEMO的代码,指导我的老大叫程辉,他是一个工作认真, 待人真诚的好人,虽然他很忙,但是我遇到问题他也会细心帮我解答, 如果某个问题他不清楚, 也会很直接的告诉我他不清楚. 但是我要是在学校遇到什么问题, 大部分老师给我的答案都是含糊其辞的, 另有一些就干脆胡说八道一通, 让我非常郁闷. 在公司实习的感觉很不一样,快快事业部里每个人都非常认真勤奋的工作,大家都为最终的产品投入了大量的时间和精力.这是我无法从学校学习到的一种精神. 这也从一个侧面反映出大学里面的问题有很多, 在学校上课, 我无法得到什么, 有些课程老师自己都没弄明白, 找本书对着学生念经, 同学们的激情早就在大一的时候被浇灭了, 剩下一些残念或怨念, 又在经文的雪上加霜后, 留下一辈子的仇恨. 这就是大学的现状. 没有谁可以改变这种状况, 而我们这些可怜的大学生们, 期望的只是一张大学毕业证, 好给保有旧社会科举制度思维的父母们一个交代. 面对这样的现状, 我只能说...very well...

虽然这一周我都是每天早上6:30起床赶车,晚上 8:30回到宿舍(坐公交车要好久, 而且正赶山修路, 在 路上耽搁很久),但是这样的生活对我来说却是习以为常,因为从大二暑假开始,我就已经以类似的作息时间,奔波于宿舍和励耘楼的实验室.即使是周六周日,我也会去励耘楼的实验室自习,而现在周末不用去公司上班,我倒是觉得轻松了不少. 生活方面,金山的伙食真的是非常好,可见金山的管理者们们对本公司员工的尊重和重视. 但是菜品种不如学校食堂的丰富, 学校的食堂和外卖经常会有花生猪骨, 逗沙包, 小强汤, 滑蛋小强, 芹菜苍蝇, 白菜腋毛等菜式供给, 不仅如此, 给我们盛菜的食堂员工还喜欢抖两抖, 一次我大脑抽筋了, 去食堂的窗口打饭, 看见一份炒豆腐还不错, 价钱是1块钱, 我就要他们给我来一份, 这份打过来, 我数了数, 一共5块豆腐....我当场就怒了, 找他理论, 没想到他跟我来了一句1块钱就是那么多了.... 最后这个了字声音还故意发的很长, 明显是一种挑衅和不懈. 言外之意就是丫个穷鬼, 还敢嫌少, 没钱还敢来吃老子豆腐., 我真是吐槽不能. 实习周记二 到金山实习已经两周了.周一上午,程辉把我叫到会议室,让我根据第一周学到的知识以及对项目的了解,制

程序设计汇总

程序设计题目汇总 36、购物计费:某商场为了促销而实行购物打折,在商场购物500元以上(不包括500元),超过部分实行八折优惠。已知某顾客购物按未打折计共花费了898元,编程计算顾客实际应付的金额。A表示顾客的购物金额,x表示顾客应该实际付给商场的金额。请将程序缺失部分补充完整。 Function func() Dim a As Single, x As Single a = 898 If a <= 500 Then _______________________ Else x = 500 + ( a – 500) * 0.8 End If func = "应付金额x=" & x End Function 答案:x = a 39、计算房租费,70平方以下(包括70)每平方4元,如果超过70平方则超过部分每平方6元。程序中变量m为平方数,变量n为房租费。 Function func() Dim m As Integer, n As Integer m = 128 If m <= 70 Then n = 4 * m ________________ n = 4 * 70 + 6 * (m – 70) End If func = "房租费n=" & n End Function 答案:Else 40、已知正方形的边长A是8,下列程序的功能是计算正方形的周长L。请将程序缺失部分补充完整。Function func() Dim A As Single Dim L As Single A = 8 L = _________________ Func = "正方形的周长" & L End Function 答案:4*A 37、判断奇偶性,如果是偶数让x为0,如果是奇数让x为1 Function func() Dim a As Integer, x As Integer If a / 2 = Int( a / 2) Then x = 0 Else x = _________________ End If

计算机网络课程设计报告文件传输协议的简单实现

课程设计 课程名称计算机网络课程设计 题目名称文件传输协议的简单设计与实现学生学院 专业班级___ _ 学号 学生姓名______ _________ 指导教师______ _____ 2010 年 1 月 5 日

设计摘要 关键词:SOCKET编程,FTPclient/server程序 摘要:本课程设计包含了文件传输协议的简单设计与实现。 文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP 网络体系结构之上,使用socket 编程接口编写两个程序,分别为客户程序和服务器程序(),实现下述命令功能:get , put, pwd, dir, cd, ?, quit 等,利用了已有网络环境设计并实现简单应用层协议。 本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。

目录 1、文件传输协议的简单设计与实现------------------------------18 1. 1 具体设计任务----------------------------------------------18基本思路及所涉及的相关理论--------------------------------18 1.2.1基本思路-------------------------------------------------18 2.2.2 相关理论--------------------------------------------18 设计流程图------------------------------------------------19 实验运行情况----------------------------------------------19 核心程序--------------------------------------------------22 2.5.1 服务器(sever)程序---------------------------------22 2.5.2 客户(client)程序----------------------------------29 心得体会-----------------------------------------------------------------------------37 参考文献--------------------------------------------------------38

相关主题
文本预览
相关文档 最新文档