《网络编程接口-概述.ppt》由会员分享,可在线阅读,更多相关《网络编程接口-概述.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本章概要本章概要第第8章章 网络编程接口网络编程接口本章讨论在本章讨论在Windows下,运用下,运用Sockt网络编程接口实现计算机之间的网络编程接口实现计算机之间的通信。通信。本章讨论内容属于软件接口。本章讨论内容属于软件接口。第第1节节 网络通信概述网络通信概述1 网络通信的硬件接口网络通信的硬件接口u通信电缆通信电缆 多组双绞线,信号差分传输。多组双绞线,信号差分传输。u网卡网卡 网卡通过网卡通过PCI总线与总线与CPU连接;连接;网卡上有一片网络通信控制芯片,如网卡上有一片网络通信控制芯片,如UM9008、3COM的的9543S等。等。网卡上有一片网卡上有一片RAM,用于存放要发送和
2、接收到的数据包。,用于存放要发送和接收到的数据包。u对网卡的操作对网卡的操作 (1)对设置控制芯片进行初始化设置,如:指定)对设置控制芯片进行初始化设置,如:指定MARK地址、指定收、地址、指定收、发缓冲区、收、发方式等;发缓冲区、收、发方式等;(2)将要发送的数据按)将要发送的数据按802.3协议的格式写入卡上的协议的格式写入卡上的RAM,并写入发,并写入发送命令,开始发送;送命令,开始发送;(3)若接收到数据包,写入接收命令,并从)若接收到数据包,写入接收命令,并从RAM中的接收缓冲区读中的接收缓冲区读取数据包。取数据包。网卡网卡RAM接口控制芯片接口控制芯片差分隔离变压器差分隔离变压器E
3、2PROM,保存,保存MARK地址等配置参数地址等配置参数2 网络协议与通信模型网络协议与通信模型应用层应用层表示层表示层会话层会话层 传输层传输层网络层网络层数据链路层数据链路层物理层物理层ISO模型模型802.3LANIP、ARP、RARP、ICMPTCP、UDP应用程序,程序员的编程平台应用程序,程序员的编程平台3 应用程序与传输层的接口应用程序与传输层的接口 为了使程序员能方便地利用协议,为了使程序员能方便地利用协议,Windows提供了各种网络编程提供了各种网络编程接口接口API函数。常用的有:函数。常用的有:Windows Sockets(WinSock)、NetBIOS、WinI
4、nt等。等。第第2节节 WinSock 编程模型编程模型WinSock 是是Windows下,用户编写应用程序时使用的下,用户编写应用程序时使用的API接口函数。接口函数。WinSock 以以DLL形式出现,在编程时,由应用程序加载。形式出现,在编程时,由应用程序加载。WinSock提供了一系列的导出函数,用于建立、提供了一系列的导出函数,用于建立、连接连接Socket;接收、;接收、发送数据等。发送数据等。WinSock有两种版本:有两种版本:u Winsock1.1:Windows 95、WinNT4u Winsock2.2:Windows98/2000/xp 使用使用 WinSock编程
5、,先应启动编程,先应启动WinSock,其函数原型如下:,其函数原型如下:int WSAStartup(WORD wVersionRequested,/要求使用要求使用Winsock的最低版本号的最低版本号 LPWSADATA lpWSAData /指向指向WSADATA结构,以返回结构,以返回 /Winsock 的详细资料的详细资料 );WinSock启动后,使用如下步骤编程:启动后,使用如下步骤编程:1 建立建立Socket SOCKET socket(int af,/地址家族,通常使用地址家族,通常使用:AF_INET int type,/socket的种类,的种类,SOCK_STREA
6、M=TCP协议,协议,SOCK_DGRAM=UDP协议协议 int protocol /所使用的协议,所使用的协议,0 );2连接连接Socket,有两种,有两种函数,原型如下:函数,原型如下:建立一个有连接的建立一个有连接的Socket:int connect(SOCKET s,/指向用指向用Socket函数生成的函数生成的Socket 描述字描述字 const struct sockaddr FAR*name,/指向服务器地址结构的指针指向服务器地址结构的指针 int namelen /该地址的长度该地址的长度);建立一个非连接的建立一个非连接的Socket:int bind(SOCKET
7、 s,/指向用指向用Socket函数生成的函数生成的Socket 描述字描述字 const struct sockaddr FAR*addr,/指向指向Socket地址结构的指针地址结构的指针 int namelen /该地址的长度该地址的长度 );3 使用一个有连接的使用一个有连接的Socket,发送和接收数据:发送和接收数据:int recv(SOCKET s,/指向用指向用Socket函数生成的函数生成的Socket 描述字描述字 char FAR*buf,/数据的缓冲区数据的缓冲区(数组数组)的指针的指针 int len,/缓冲区的大小缓冲区的大小 int flags /调用方式调用方
8、式 );int send(SOCKET s,/指向用指向用Socket函数生成的函数生成的Socket 描述字描述字 const char FAR*buf,/发送的缓冲区发送的缓冲区(数组数组)的指针的指针 int len,/缓冲区的大小缓冲区的大小 int flags /调用方式调用方式);4 使用无连接的使用无连接的Socket接收、发送数据接收、发送数据 int recvfrom(SOCKET s,/指向用指向用Socket函数生成的函数生成的Socket 描述字描述字 char FAR*buf,/接收数据的缓冲区接收数据的缓冲区(数组数组)的指针的指针 int len,/缓冲区的大小缓
9、冲区的大小 int flags,/调用方式,调用方式,0 struct sockaddr FAR*from,/指向发送方指向发送方SOCKET地址的指针地址的指针 int FAR*fromlen /发送方发送方SOCKET地址的大小地址的大小 );int sendto(SOCKET s,/指向用指向用Socket函数生成的函数生成的Socket 描述字描述字 const char FAR*buf,/发送数据的缓冲区发送数据的缓冲区(数组数组)的指针的指针 int len,/缓冲区的大小缓冲区的大小 int flags,/调用方式,调用方式,0 const struct sockaddr FAR
10、*to,/指向接收方指向接收方SOCKET地址的指针地址的指针 int token /接收方接收方SOCKET地址的大小地址的大小 );第第3节节 MFC对对Socket的支持的支持MFC提供了两个提供了两个Socket类:类:Casync Socket 类类:封装了封装了Windows Ssocket 的的API;Csocket 类:类:从从Casync Socket 类派生,支持同步操作,便于使用线类派生,支持同步操作,便于使用线程。程。第第4节节 Socket编程举例编程举例本节运用本节运用Windows Socket API函数,实现函数,实现Socket编程。具体为:编程。具体为:在
11、局域网上实现两台计算机相互通信。甲机发送数据,乙机收到后在局域网上实现两台计算机相互通信。甲机发送数据,乙机收到后予以显示。予以显示。局域网中不设置专门的服务器,因此,应采用局域网中不设置专门的服务器,因此,应采用UDP协议,每台计算协议,每台计算机既是服务器,也是客户机。机既是服务器,也是客户机。采用线程工作。主线程发送数据,再专门创建一个工作线程来接收采用线程工作。主线程发送数据,再专门创建一个工作线程来接收数据。当工作线程收到数据时,立即发送一个自定义消息数据。当工作线程收到数据时,立即发送一个自定义消息WM_USER,通知主线程显示收到的数据。通知主线程显示收到的数据。程序运行界面:程序运行界面:注意:注意:在工程中隐式链接在工程中隐式链接Socket库:库:wsock32.lib mpr.lib 并在工程中包含对应的头文件:并在工程中包含对应的头文件:#include