zoukankan      html  css  js  c++  java
  • Winsock

    Winsock

    Winsock API

    Winsock是网络编程接口,而不是协议。

    网络原理和协议

    建立Winsock规范的主要目的是提供一个与协议无关的传送接口。

    Winsock将网络编程接口与具体协议解耦

    协议的特征

    • 面向消息
    • 面向连接和无连接
    • 可靠性和次序性
    • 从容关闭
    • 广播数据
    • 多播数据
    • 服务质量
    • 部分消息
    • 路由选择
    面向消息

    对每个离散写命令来说,如果传送协议把它们(而且只有它们)当做一条独立的消息在网上传送,我们就说该协议是面向消息。

    面向消息:传送协议以独立的消息单元在网络上传输数据

    第一次读取调用不会将这所有的三个数据包都返回,即使这些数据包已经收到也如此。这称为“保护消息边界”(preserving message boundaries)

    多个消息间存在保护消息边界,每次读取不能返回多个消息。

    无保护消息边界的协议通常称作“基于流的协议”

    对发送端来说,意味着允许系统将原始消息分解成小消息或把
    几条消息积累在一起,形成一个较大的数据包。对接收端来说,则是数据一到达网络堆栈,网络堆栈就开始读取它,并将它缓存下来等候进程处理。在进程请求处理大量数据时,系统会在不溢出为客户请求提供的缓冲区这一前提下,尽量返回更多的数据

    基于流的协议不按照消息区分接收到的数据

    面向连接和无连接

    面向连接的服务中,进行数据交换之前,必须与通信方建立一条路径

    这样既确定了通信方之间存在路由,又保证了通信双方都是活动的、都可彼此响应,但其特点是在通信双方之间建立一个通信信道需
    要很多开支

    而无连接协议却不保证接收端是否正在收听

    面向连接一方面要保证链路存在,二要确定对方是活动的,可彼此响应,相当于建立了一个通信约定

    广播数据

    广播数据即数据从一个工作站发出,局域网内的其他所有工作站都能收到它。

    这一特征适用于无连接协议,因为LAN上的所有机器都可获得并处理广播消息。

    使用广播消息的不利之处是每台机器都必须对该消息进行处理。比如,一用户在LAN上广播一条消息,每台机器上的网卡都会收到这条消息,并把它上传到网络堆栈。然后,堆栈将这条消息在所有的网络应用中循环,看它们是否应该接收这条消息。

    • 广播是针对局域网中所有设备;
    • 广播适用于无连接协议;
    多播数据

    I P协议下,多播是广播的一种变形。

    I P多播要求对收发数据感兴趣的所有主机加入一个特定的组。进程希望加入多播组时,网卡上会增添一个过滤器,这样,只有绑定组地址的数据才会被网络硬件捡起,并上传到网络堆栈进行恰当处理。

    • 多播是针对特定的组成员

    Winsock支持的协议

    Wi n 3 2平台提供的最有用的特征之一是能够同步支持多种不同的网络协议。

    • IP
    • IPX/SPX
    • NetBIOS
    • AppleTalk
    • ATM
    • 红外线套接字

    Winsock2协议信息

    • 如何获取系统中安装的网络协议信息?
      WSAEnumProtocols

    要想获得系统中安装的网络协议的相关信息,调用这个函数W S A E n u m P r o t o c o l s即可

    • 如何加载Winsock库?

    在可以调用一个Wi n s o c k函数之前,必须先加载一个版本正确的Wi n s o c k库。Winsock启动例程是W S A S t a r t u p

    在结束Wi n s o c k库,而且不再需要调用任何Wi n s o c k函数时,附带例程会卸载这个库,
    并释放资源。这个函数的定义是:
    int WSACleanup (void);
    记住,每次调用W S A S t a r t u p,都需要调用相应的W S A C l e a n u p,因为每次启动调用都
    会增加对加载Winsock DLL的引用次数,它要求调用同样多次的W S A C l e a n u p,以此抵消
    引用次数。

  • 相关阅读:
    luogu4365 秘密袭击 (生成函数+线段树合并+拉格朗日插值)
    [模板]左偏树
    luogu4166 最大土地面积 (旋转卡壳)
    bzoj3168 钙铁锌硒维生素 (矩阵求逆+二分图最小字典序匹配)
    [模板]矩阵树定理
    [模板]快速傅里叶变换(FFT)
    [模板]Min_25筛
    [模板]杜教筛
    [模板]莫比乌斯反演
    DrawerLayout—侧拉栏的使用
  • 原文地址:https://www.cnblogs.com/helo-blog/p/6288940.html
Copyright © 2011-2022 走看看