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