1. 首页
  2. 文档大全

winsock编程-jiang

上传者:20****2 2022-06-22 13:51:14上传 PPT文件 521.50KB
winsock编程-jiang_第1页 winsock编程-jiang_第2页 winsock编程-jiang_第3页

《winsock编程-jiang》由会员分享,可在线阅读,更多相关《winsock编程-jiang(39页珍藏版)》请在文档大全上搜索。

1、计算机网络通信计算机网络通信主讲人:姜有亮指导老师:姚仲敏Winsock编程n网络应用程序设计基础nWinsock编程接口nWinsock编程详解网络应用程序设计基础n网络程序体系结构vC/S(web)lC端之间一般不直接交流信息,仅与S端通信lS端有一固定的公开的IP地址vP2P(BT)l任意两台主机可以直接相互通信l伸缩性好但高度分散难管理v混合(eMule、QQ)l一个或数个服务器来维护总体状况网络应用程序设计基础n网络程序通信实体 进程是通信的实体,它们在不同终端系统上通过网络来交流信息。发送进程创建消息,将之发送到网络,接收进程接收信息发送响应v客户/服务器进程l发起通信为客户;等待

2、通信连接为服务器v套接字(socket)l程序与网络之间的API网络应用程序设计基础n开发环境在windows平台上,开发网络程序需要:vWinsock2.hvWs2_32.libvWs2_32.dllWinsock概述nWinsock是网络开发接口而不是协议 Winsock是一套开放的、支持多种协议的windows下网络编程接口,应用程序通过调用winsock的API实现相互间的通信,而winsock利用下层的网络通信协议功能和操作系统调用实现实际通信工作。 Windows平台有两个版本winsock:1.1和2.0,目前大量使用的是2.0版Winsock概述nWinsock支持的协议vIP

3、 S=socket(AF_INET,SOCK_STREAM/SOCK_DGRAM,0)v红外线 S=socket(AF_IRDA,SOCK_STREAM,0)vNetBIOS S=socket(AF_NETBIOS, SOCK_DGRAM,0)Winsock概述vATMvIPX/SPXv蓝牙vAppletalknWinsock是一种规范,建立winsock2规范的主要目的是提供一个与协议无关的传送接口,这个接口是建立在套接字基础上的Winsock概述套接字套接字实际上是一个指向传输提供者的句柄,在win32中,套接字是一个独立数据类型:socketn Socket类型v流式套接字l面向连接、有

4、序、可靠的数据流服务v数据报套接字l无连接、双向的但不保证可靠性和有序性v原始套接字l允许访问底层传输协议的一种套接字类型Winsock基本概念nWinsock寻址n特殊地址n字节顺序n套接字模式n套接字I/O模式n带外数据Winsock基本概念n Winsock寻址寻址寻址:通过某种方式找到参与通讯的终端通过某种方式找到参与通讯的终端 因为winsock要兼容多个协议,所以必须采用通用的寻址方式。TCP/IP使用IP地址和端口号来制定一个地址,但其他协议也许采用不同的形式,如果winsock强迫使用特定的寻址方式,添加其他协议就不太可能了。Winsock的第一个版本使用sockaddrnSt

5、ruct sockaddru_short sa_family;Char sa_data14n为便于操作,微软又增加了sockaddr的TCP/IP版本:sockaddr_inn Sockaddr_in struct sockaddr_in short sin_family; /地址家族,应为AF_INET unsigned short sin_port; / 16位端口号,网络字节顺序struct in_addr sin_addr; /32位IP地址网络字节顺序 char sin_zero8; /保留,应设为0; 其中其中in_addr也是一个结构体,用来存储也是一个结构体,用来存储IP地址地

6、址说明:通信端口号分为下面这三类:说明:通信端口号分为下面这三类: “已知已知”端口、端口、 已注册端口、动态和私用端口。已注册端口、动态和私用端口。l 0 1023是为固定服务保留的。l 1024 49151已注册的端口,供普通用户的普通用户进程或程序使用。l 49152 65535是动态和(或)私用端口。共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。 n in_addrstruct in_addr union/*以4个u_char 来描述*/ struct u_ch

7、ar s_b1, s_b2,s_b3,s_b4; S_un_b;/*以2个u_short 来描述*/ struct u_short s_w1, s_w2; S_un_w; u_long S_addr; /以1个u_long来描述S_un;n 特殊地址vINADDR_ANY 允许服务器应用监听主机计算机上的每个地址的客户机的活动;一般在该地址绑定套接字和本地接口来监听连接。如果你有一个多址系统,这个地址就允许一个独立应用接收发自多个接口的回应vINADDR_BROADCAST 用于在一个IP网络中发送广播UDP数据报,要使用这个特殊地址,需要应用设置套接字选项SO_BROADCASTn 字节顺序

8、不同计算机有时使用不同的字节顺序存储数据:Little-Endian(Intel)和Big-Endian(网络字节顺序)任何从winsock函数对IP地址和端口号的引用和传送给winsock函数的IP地址和端口号均是按照网络顺便组织的。包括sockaddr_in这一数据结构中的IP地址域和端口域注:注:主机字节顺序转换成网络字节顺序函数主机字节顺序转换成网络字节顺序函数:u_long htonl(u_long hostlong)u_short htons(u_short hostshort)网络字节顺序转换成主机字节顺序函数:网络字节顺序转换成主机字节顺序函数:u_long ntohl(u_l


文档来源:https://www.renrendoc.com/paper/212633409.html

文档标签:

下载地址