网络程序设计-04-WinSock编程详解-TCP通信编程-v1.0.0
- 格式:ppt
- 大小:986.50 KB
- 文档页数:25


WinSock网络编程Windows Sockets是一套开放的、支持多种协议的Windows下的网络编程接口。
现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。
Winsockets无疑是我们进行网络编程的利器。
Winsocket编程之TCP/IP体系结构一、什么是TCP/IPTCP/IP指的是Internet上使用的两种网络协议:传输控制协议和网际协议;事实上,TCP协诡计和IP协议只是一个称为TCP/IP协议族中的两种而已。
TCP/IP协议族可以将各种操作系统和网络部件连接起来,它能提供一种在各种系统间移动数据的标准方法。
这些协议既可以用于Internet上,也可以用于专用网中。
TCP/IP协议族中的协议为当今网络用户的各种服务提供数传输功能,这些服务包括:·电子邮件的传送·文件传输·即时消息·访问万维网开放式系统互联(OSI)参考模型OSI参考模型用于对涉网络的各种技术进行标准化,它定义的七层结构代表了数据通信协议的基本结构。
OSI模型中的每一层都指定了特定的功能,它可以看作是各层紧挨着另一屋的一个栈。
对于给定的层,它所提供的服务是由这一层的协议定义的。
理解了OSI模型及其各层有助于理解TCP/IP网络中的各部分与应用程序之间是如何进行交互的。
OSI模型栈的七层分别是:·第7层(应用层),这是OSI模型的最高层,本层定义了应用程序与网络及其他系统之间的交互方式·第6层(表示层),包含了部分操作系统的协议,这一层定义了信息的显示格式,数据加密和解释属于本层功能。
·第5层(会话层),协调端到端的通信,本层维护各种会话状态,提供安全、登录和管理功能。
·第4层(传输层),控制各系统之间的数据流,定义各种消息的数据结构,并进行差错校验。
Web浏览器的加密通常在本层实现。
Winsock网络编程一、相关概念●网络协议TCP/IP(传输控制协议/网际协议)是业界标准的协议组。
它是基于四层参考模型,属于TCP/IP协议组的所有协议都位于该模型的上面三层。
TCP/IP模型的每一层对应于国际标准化组织(ISO)提议的七层“开放系统互联(OSI)”参考模型的一层或者多层。
●TCP/IP核心协议1、地址解析协议(ARP):实现IP地址到物理地址的转换;2、网际协议(IP):是无连接的、不可靠的数据报协议,主要负责主机之间的寻址和选择数据包的路由;3、网际消息协议(ICMP):通过ICMP,使用IP通信的主机和路由器可以报告错误并交换受限控制和状态信息;4、用户数据报协议(UDP):在主机之间提供轻便、快捷、不可靠地传输数据;5、传输控制协议(TCP):提供可靠的、面向连接的数据报传递服务。
●Windows网络编程的三种模式:1、阻塞套接字模式2、异步套接字模式(基于消息的非阻塞套接字模式)3、MFC异步套接字模式二、使用阻塞套接字模式进行Windows网络编程1、Windows Sockets通信程序开发的基本步骤:见《TCP_UDP网络编程步骤.xls》2、相关函数说明●WSAStartup:int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);wVersionRequested:用于指定准备加载的Winsock库的版本。
高位字节指定所需要的Winsock库的副版本,而低位字节则是主版本。
可用MAKEWORD(x,y)(其中,x是高位字节,y是低位字节)方便地获得wVersionRequested的正确值。
lpWSAData:是指向WSADA TA结构的指针,WSAStartup用其加载的库版本有关的信息填在这个结构中。
WSADATA结构定义如下:typedef struct WSAData {WORD wVersion;WORD wHighVersion;char szDescription[WSADESCRIPTION_LEN+1];char szSystemStatus[WSASYS_STATUS_LEN+1];unsigned short iMaxSockets;unsigned short iMaxUdpDg;char FAR *lpVendorInfo;} WSADATA, *LPWSADA TA;WSAStartup把第一个字段wVersion设成打算使用的Winsock版本。
WinSock编程基本概念编程原理编程实例基本概念套接字(socket)网络字节顺序客户机/服务器模式套接字(socket)的引入为了能够方便的开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统调用socket(套接字)。
socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序。
随着Unix的应用推广,套接字在编写网络软件中得到了极大的普及。
后来,套接字又被引进了Windows等操作系统,成为开发网络应用程序的非常有效快捷的工具。
Windows Sockets的实现Windows Sockets是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用。
Windows Sockets在继承了Berkeley Sockets主要特征的基础上,又对它进行了重要扩充。
这些扩充主要是提供了一些异步函数,并增加了符合Windows 消息驱动特性的网络事件异步选择机制。
Windows Sockets 1.1和Berkeley Sockets都是基于TCP/IP协议的;Windows Sockets 2从Windows Sockets 1.1发展而来,与协议无关并向下兼容,可以使用任何底层传输协议提供的通信能力,来为上层应用程序完成网络数据通讯,而不关心底层网络链路的通讯情况,真正实现了底层网络通讯对应用程序的透明。
Windows Sockets开放的,支持多协议的Windows网络编程接口。
由开发组件和运行组件两部份组成。
介绍文档、引入库、头文件(WINSOCK.H)。
动态链接库(Winsock.dll)。
套接字的类型流式套接字(SOCK_STREAM)提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送,且按发送顺序接收。
数据报式套接字(SOCK_DGRAM)提供无连接服务。