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,以此抵消

    引用次数。

Winsock - 1 - Winsock API的更多相关文章

  1. Winsock 编程详解

    转载请注明出处!本文地址:https://www.cnblogs.com/teternity/p/WinSock.html Winsock 编程 目录 通用函数讲解 WSAStartup WSACle ...

  2. WinSock网络编程基础(1)

    记录学习windows网络编程过程中遇到的问题和相关笔记 基本概念: Socket: socket起源于UNIX,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.基于&qu ...

  3. netsh & winsock & 对前端的影响

    netsh 与 winsock 一个是window的脚本工具,另一个则是window是网络编程中要用到的网络接口,而非要说跟我小小的前端有什么影响,那还真有...,当然这个影响是很不好的,比如node ...

  4. Winsock编程原理——面向连接

    Winsock编程原理——面向连接 Windows Sockets使用套接字进行编程,套接字编程是面向客户端/服务器模型而设计的,因此系统中需要客户端和服务器两个不同类型的进程,根据连接类型的不同,对 ...

  5. Winsock API编程介绍

    相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...

  6. Winsock API TCP/IP网络通信

    通信流程如下: 1.Winsock库的装入.初始化 #pragma comment(lib,"WS2_32.lib").WSAStartup() 2.套接字的创建(服务器端是监听套 ...

  7. 用WINSOCK API实现同步非阻塞方式的网络通讯

    Option Base 0Option Explicit '* ************************************************** *'*  模块名称:Winsock ...

  8. IIS 架构解析

    我们在使用ASP.NET平台做web开发的时候,经常会接触到IIS(Internet Information Services 互联网信息服务).这篇文章主要来介绍IIS7.0+的架构.IIS的安全脆 ...

  9. linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解

    最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...

随机推荐

  1. NodeJS热部署工具 — supervisor

    NodeJS热部署工具 — supervisor 大家都在开发nodejs应用时遇到过这样的情况,修改nodejs应用中的程序文件后必须重启nodejs才能重新加载应用代码.这是因为nodejs加载过 ...

  2. Js模块模式

    模块模式 索引 引子 什么是模块模式 命名空间模式 声明依赖 私有和特权成员 即时函数 揭示模块模式 结语 引子 这篇算是对第9篇中内容的发散和补充,当时我只是把模块模式中的一些内容简单的归为函数篇中 ...

  3. c#通用多线程基类,以队列形式

    c#通用多线程基类,以队列形式 个人原创.欢迎转载.转载请注明出处.http://www.cnblogs.com/zetee/p/3487084.html 多线程这个概念大家都很熟悉,对于winfor ...

  4. C语言中数据类型的长度

    面试中C里面int长度经常会被问到,下面总结一下作为资料: 首先看看一般规定: 标准c规定,int长度等于机器字长,short的表示范围不能大于int的表示范围,long的表示范围不能小于int的表示 ...

  5. Django 源码小剖: 初探 WSGI

    Django 源码小剖: 初探 WSGI python 作为一种脚本语言, 已经逐渐大量用于 web 后台开发中, 而基于 python 的 web 应用程序框架也越来越多, Bottle, Djan ...

  6. 四.redis 事务

    redis对事务的支持目前还比较简单.redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令. 由于redis是单线程来处理所有client的请求的所 ...

  7. PHP之算法

    PHP之算法偶遇隨感 要求如下:    第1种: A,B,C    期望能够得到的组合是: AB,AC,BC        第2种: A,B,C,D(可通过参数控制结果长度,如长度为2或3)    期 ...

  8. 使用Emacs:生存篇

    使用Emacs:生存篇 vim和Emacs都是很强大的编辑器.所以,入门有一定难度.这里不谈vim,谈Emacs下的生存--第一次使用Emacs时的使用. 1.emacs的安装: 在Fedora下: ...

  9. A First Look at Rust Language

    文 Akisann@CNblogs / zhaihj@Github 本篇文章同时发布在Github上:http://zhaihj.github.io/a-first-look-at-rust.html ...

  10. MySQL 的 phpmyadmin上传大小限制(转)以及 MySQL server has gone away 的解决办法

    phpmyadmin上传大小限制 原帖地址:http://www.hmidc.com/home/news/?13914.html 时间:2011-6-21 11:17:57  作者:红帽之家  来源: ...