计算机网络一TCPIP协议与Socket编程认识实验

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

东南大学自动化学院

实验报告

课程名称:计算机网络实验

第 1 次实验

实验名称:TCP/IP协议与Socket编程认识实验

院(系):自动化专业:自动化

姓名:学号:

实验室:实验组别:

同组人员:实验时间:2012年5月9日评定成绩:审阅教师:

一、实验目的和要求:

1. 熟悉TCP/IP协议的功能和网络操作;

2. 了解MS-DOS环境下基于SOCKET的编程原理;

3. 编写一个小型的Socket实用程序,初步了解Windows环境下使用Socket的编程。

二、实验原理:

1.Windows Sockets规范:

Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。

Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。

遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets兼容的,而Windows Sockets 兼容实现的提供者,我们称之为Windows Sockets提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现Windows Sockets兼容。

任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。

Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口.

应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图1-1。

虽然我们并不反对使用这一套API来实现另一通讯协议栈(而且我们期望在将来规范的修改中能够讨论这个问题),但这种用法已经超出了我们这一份规范所规定的范围,我们在此将不作讨论。

2.Bekeley套接口:

Windows Sockets规范是建立在Bekeley套接口模型上的。这个模型现在已是TCP/IP网络的标准。它提供了习惯于UNIX套接口编程的程序员极为熟悉的环境,并且简化了移植现有的基于套接口的应用程序源代码的工作。Windows Sockets API也是和4.3BSD的要求一致的。

3.Microsoft Windows和针对Windows的扩展

这一套Windows Sockets API能够在所有3.0以上版本的Windows和所有Windows Scokets实现上使用,所以它不仅为Windwos Sockets实现和Windows Sockets应用程序提供了16位操作环境,而且也提供了32位操作环境。

Windows Sockets也支持多线程的Windows进程。一个进程包含了一个或多个同时执行的线程。在Windows 3.1非多线程版本中,一个任务对应了一个仅具有单个线程的进程。而我们在本书中所提到的线程均是指在多线程Windows环境中的真正意义的线程。在非多线程环境中(例如Windows 3.0)这个术语是指Windows Sockets进程.

Windows Sockets规范中的针对Windows的扩展部分为应用程序开发者提供了开发具有Windows应用软件的功能。它有利于使程序员写出更加稳定并且更加高效的程序,也有助于在非占先Windows版本中使多个应用程序在多任务情况下更好地运作。除了WSAStartup()和WSACleanup()两个函数除外,其他的Windows扩展函数的使用不是强制性的。

4. Winsock编程模型

⑴建立socket。程序使用socket进行网络时,必须先建立一个socket。为了建立一个socket,成需要调用socket函数。下面程序与举显示了一个socket函数调用的例子:socket_handle=socket(protocol_family,_socket_type,protocol);

⑵配置一个socket。为了配置一个,程序可使用Winsock API中不同的函数。一般来讲,每个socket 需要五种信息:本地和远地机的IP地址,本地和远地进程的协议端口,联接上使用的协议。

⑶连接一个socket。面向连接客户程序必须提供给Socket的唯一地址信息是远地主机信息—IP地址和协议端口。

⑷使用一个Socket,程序能够使用Winsock API在一个配置好的Socket上传送和接收数据。I/O函数如下:Send,通过连接的Socket传送数据,使用特殊的标志控制Socket的行为。Sendto,将数据传送给Socket地址结构指定的主机,传送时使用一个简单的报文缓冲区。Recvfrom,从Socket接收数据,选择发送主机的网络地址,传送时使用一个简单的报文缓冲区。

⑸使用一个连接的Socket。由于Send函数不能指定目的地址,因此,程序只能在连接的Socket上使用它。也就是说,在程序使用Send函数之前,必须建立一个Socket。

⑹使用一个无连接的Socket。当没有建立Socket连接时,上述的Send函数便不能使用,这是需要用Sendto函数

5. 根据上述WINSOCK API 包括包括对应函数如下:

1、WSAStartup():连结应用程序与Windows Sockets DLL 的第一个函数。说明:此函数是应用程序调用Windows Sockets DLL函数中的第一个,也唯有此函数呼叫成功后,才可以再调用其他Windows Sockets DLL 的函数。

2、WSACleanup():结束Windows Sockets DLL 的使用。说明:当应用程序不再需要使用Windows Sockets DLL时,须调用此函数来注销使用,以便释放其占用的资源。

3、socket():建立Socket。说明:此函数用来建立一个Socket 描述字,并为此Socket 建立其所使用的资源。

4、closesocket():关闭某一Socket。说明:此一函数是用来关闭某一Socket。

相关文档
最新文档