攀枝花学院学生创新实验项目
结 题 报 告 书
项目名称:
承接单位:
负责人:
小组成员:
指导教师:
完成时间:
教务处制
二〇一 年 月
一、课题名称:
二、课题提出的背景:
三、课题研究的目的和意义:
四、课题的研究方法:
五、课题研究的步骤
六、总体结构及原理
七、课题的成果与分析
八、对课题研究的思考与总结
第二篇:创新性实验结题报告书(学生结题用)
编号:
数学与计算科学学院
创新性实验结题报告书
实验题目:单张照片人脸检测
实验成绩(教师填写):
学 院: 数学与计算科学学院
专 业: 信息与计算科学
学生姓名: 韩尚颖 1200710218
小组成员: 覃启霞 1200710211
指导教师: 丁 勇 教 授
2013 年 04月 08日
摘 要: Winsock 是Windows 下的网络编程接口,是一个基于Socket 模型的API。简单分析了Winsock 的结构及利用Winsock 实现计算机数据传输服务的机制, 给出了一种基于Winsock 和TCP/ IP 协议的局域网多人聊天系统的设计方法, 并用VC 加以
实现。
关键词:Winsock; 聊天程序; 客户端; 服务器
一、实验目的及主要创新性点:
1,网络聊天在当今已经不算新鲜事物, 但大多数网络聊天都需要借助于Internet 的服务器,这就给那些具有大规模内部网络的用户造成了不便, 出于安全等考虑, 通常这些内部网络不能直接连接到Internet。 基于Winsock 的局域网聊天室可以方便地解决这一问题, 特别适用于公司内部网络和学校内部网络。目前, 此类程序多基于Java和VC++开发, 但过程相对繁琐, 本文所提供的方法主要基于Windows 下的API ) Winsock(Windows Sockets) 实现, 该接口可支持TCP/ IP 协议和UDP 协议,不仅操作简单, 效果也较好。
2 Winsock 的结构及通信机制
Socket( 套接字) 最初是由加利福尼亚大学Berkeley( 伯克利) 分校为UNIX 操作系统开发的网络通信接口, 随着UNIX 的广泛使用, Socket 成为最流行的网络通信应用程序接口之一。 程序员可以使用该接口进行编程, 从而实现网络会话。 Socket 接口的处理过程是/ 打开) 读) 写)关闭0。 即为了实现网络通信, 程序首先需要进行一个网络连接, 然后才可以读写数据, 不用时必须关闭该连接。随着Windows 的广泛使用, 为了降低Windows 环境下通信软件的开发难度, 提供类似于Unix系统中的网络编程界面, WinSock 应运而生。 Winsock(Windows Sockets) 是Windows 下的网络编程接口, 它是一个基于Socket 模型的API, Windows API 只有在Microsoft Windows 操作系统类中使用。 Winsock 是以动态链接库( DLL) 来实现Socket 接口的。利用Winsock 进行网络通信主要依赖于Windows 内部的消息传送机制, 使用相关函数初始化、建立、配置和使用Socket。即应用程序通过调用Winsock 的API 实现相互间的通信。 Winsock 又可利用下层的网络通信协议及操作系统调用实际的通信功能, 从而实现网络通信。 利用Winsock 可以与远程计算机建立连接, 并通过网络通信协议进行数据交换。
3 程序的设计与实现
基于WinSock 的聊天程序实现的关键就在于对Socket读写动作的控制. 当用户发送信息时将数据写到Socket , 当对方有数据到达时, 从Socket 读出并显示给用户。
二、实验要求:
1、 掌握socket网络编程的设计与应用;
2、 熟悉怎么使用Windows API函数设计窗口界面,实现聊天功能;
3、 了解Windows API 编程的方法与技能的;
4、 知道如何调用API函数及各种API函数的函数功能;
三、实验原理:
使用sockets Socket控件让你建立一个利用TCP/IP和有关的协议与其他系统进行通信的应用。使用Sockets,你能够读和写通过它连接的其他机器,而不用担心实际的网络软件的相关细节。Sockets提供基于TCP/IP协议的连接。除此以外还能很好的工作,在其他相关的协议,例如Xerox Network System (XNS), Digital’s DEC net, or Novell’s IPX/SPX 家族。 C++ Builder提供你写网络服务器或客户应用程序去读和写其他的系统。一个服务或客户程序通常专注于一个单一的服务如超文本传送协议(HTTP)或文件传输协议(FTP)。使用server sockets,一个应用程序可以提供这些服务中的一个去连接一个希望使用服务的客户程序。Client sockets允许一个应用使用这些服务中的一个去连接提供这个服务的服务应用。
四、实验内容与步骤:
1、创建对话框工程;
2、设计对话框样式和功能按钮;
3、编写对话框初始界面,主要是实现“网络设置”按钮功能
4、编写创建socket套接字;
5、编写BOOL SOCKET_Select(SOCKET hSocket, int nTimeOut, BOOL bRead)函数(注:选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理!
利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,
在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;同时防止在套接字处于非阻塞模
式中时,产生WSAEWOULDBLOCK错误)功能为:假定我们想知道是否可从一个套接字中安全地读取数据,同时不会陷于无休止的
“锁定”状态,便可使用 FDSET 宏,将自己的套接字分配给 fdread 集合,再来调用 select。要
想检测自己的套接字是否仍属 fdread 集合的一部分,可使用 FD_ISSET 宏。采用下述步骤,便
可完成用 select 操作一个或多个套接字句柄的全过程:
1) 使用FDZERO宏,初始化一个fdset对象;
2) 使用FDSET宏,将套接字句柄加入到fdset集合中;
3) 调用 select 函数,等待其返回……select 完成后,会返回在所有 fdset 集合中设置的套接字句柄总数,
并对每个集合进行相应的更新。
4) 根据 select的返回值和 FDISSET宏,对 fdset 集合进行检查。
5) 知道了每个集合中“待决”的 I/O操作之后,对 I/O进行处理,
然后返回步骤1 ),继续进行 select 处理;
5、编写服务器端线程代码;
6、编写客户端连接代码;
7、编写“单选按钮”功能函数
8、编写“结束”线程函数;
9、处理一些琐碎的问题。
五、实验过程原始记录(数据,图表,计算等):
六,实验结果分析或总结:
学会了如何使用sockets Socket控件让你建立一个利用TCP/IP和有关的协议与其他系统进行通信的应用。使用Sockets,你能够读和写通过它连接的其他机器,而不用担心实际的网络软件的相关细节。Sockets提供基于TCP/IP协议的连接。除此以外还能很好的工作,在其他相关的协议。