如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第三章TCP/IP编程接口____Socket1、什么是网络应用程序应用程序,可分为2种:1)无需其他程序产生的数据,其他程序也不使用它输出的数据(进程之间不存在通信问题)2)需要与其他应用程序进行数据交换才能完成其功能(进程之间存在通信问题)进程间通信,可分为2种:1)单机系统中的进程之间的通信2)不同系统间,通过网络通信协议进行的进程间的通信(网络应用程序)2、网络应用程序的标识问题同一系统中不同进程间的通信,通过系统分配的进程ID来唯一标识一个进程。?网络中,为了唯一标识网络中通信的一个进程是否也可以通过进程ID来唯一标识?网络中,为了唯一标识网络中通信的一个进程使用一个三元组三元组仅仅指定了通信的一条连接的半个部分(半相关)完整表示通信中2个进程,需要六元组(全相关)互联网中通信主机在网络层使用IP协议,在运输层中可使用TCP或UDP协议?是否可以呢?协议格式不同,在传输层无法识别数据,无法正常通信。简化为五元组:3、TCP/IP应用程序工作模型与网络编程接口明确3点:1)网络应用程序的设计,是使用系统提供的网络协议完成用户程序的功能2)不是由用户去实现网络协议各层的功能3)进行TCP/IP程序设计的关键问题:熟悉所用平台提供的网络编程接口(API)Windows环境下的网络编程接口:WindowsSocketsSocket:套接口、套接字、接口、插口…4、SocketsUnix操作系统下流行的一种API1983年在伯克利分校的4.2BSD操作系统中首先引用,被称为“BerkeleySocketAPI”开始仅仅支持TCP/IP协议,后增加对OSI协议的支持WindowsSockets简称Winsock,Windows环境下的一套网络编程规范,1991年根据BerkeleySocketAPI制定Windows环境下网络编程事实上的标准(开放的,支持多协议)。现在开发网络应用程序都使用Winsock2要使用,需要在代码中添加的:1)头文件winsock2.h(代码第1行)2)到WS2_32.lib库的链接(代码第2行)#include<winsock2.h>//#pragmacomment(lib,"WS2_32")在Winsock规范中,将WinsockAPI函数集分为:Winsock规范的2个目标:1)给网络应用程序开发者提供一套简单的网络编程API。2)让各家网络软件供应商能根据这套规范建立各自符合Winsock标准的实现和应用程序。Winsock兼容的:遵守Winsock规范的网络软件Winsock提供者:Winsock兼容实现的提供者能够与Winsock兼容实现协同工作的应用程序,都被认为是具有Winsock接口的。称为Winsock应用程序5、套接口(Socket)WinsockAPI依靠套接口进行网络程序设计套接口的本质:通信过程中所使用的一些缓冲区及相关的数据结构。(2).套接口的分类流式套接口:使用TCP协议来实现数据报式套接口:使用UDP协议来实现原始套接口:允许对较低层协议(eg:IP、ICMP)进行直接访问二、地址与地址操作函数Socket编程过程中,经常使用的套接口地址结构:INET协议族地址结构、通用地址结构。1、INET协议族地址结构sockaddr_in其结构定义如下:数据结构:sockaddr_inThefamilyisoneofAF_UNIXUnixinternalprotocolsAF_INETInternetprotocolsAF_NSXeroxNSprotocolsAF_IMPLINKIMPlinklayer其中,AF_代表“addressfamily”Socket地址的数据部分根据不同的地址类型来解释,常见的地址类型是internet、XNS和UNIX。2、IPV4地址结构——in_addr用于存储32位IPV4地址的数据结构,其定义如下:Structin_addr{union{struct{u_chars_b1,s_b2,s_b3,s_b4;}S_un_bstruct{u_shorts_w1,s_w2;}S_un_w;u_longS_addr;}S_un;#defines_addrS_un.S_addr(1)In_addr结构的赋值in_addraddr;addr.S_un.S_addr=inet_addr(“202.119.9.199);也可以addr.s_addr=inet_addr(“202.119.9.199);自动获取本机IP地址addr.s_addr