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,以此抵消
    引用次数。

  • 相关阅读:
    CodeForces 734F Anton and School
    CodeForces 733F Drivers Dissatisfaction
    CodeForces 733C Epidemic in Monstropolis
    ZOJ 3498 Javabeans
    ZOJ 3497 Mistwald
    ZOJ 3495 Lego Bricks
    CodeForces 732F Tourist Reform
    CodeForces 732E Sockets
    CodeForces 731E Funny Game
    CodeForces 731D 80-th Level Archeology
  • 原文地址:https://www.cnblogs.com/helo-blog/p/6288940.html
Copyright © 2011-2022 走看看