Winsock - 1 - Winsock API
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的更多相关文章
- Winsock 编程详解
转载请注明出处!本文地址:https://www.cnblogs.com/teternity/p/WinSock.html Winsock 编程 目录 通用函数讲解 WSAStartup WSACle ...
- WinSock网络编程基础(1)
记录学习windows网络编程过程中遇到的问题和相关笔记 基本概念: Socket: socket起源于UNIX,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.基于&qu ...
- netsh & winsock & 对前端的影响
netsh 与 winsock 一个是window的脚本工具,另一个则是window是网络编程中要用到的网络接口,而非要说跟我小小的前端有什么影响,那还真有...,当然这个影响是很不好的,比如node ...
- Winsock编程原理——面向连接
Winsock编程原理——面向连接 Windows Sockets使用套接字进行编程,套接字编程是面向客户端/服务器模型而设计的,因此系统中需要客户端和服务器两个不同类型的进程,根据连接类型的不同,对 ...
- Winsock API编程介绍
相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...
- Winsock API TCP/IP网络通信
通信流程如下: 1.Winsock库的装入.初始化 #pragma comment(lib,"WS2_32.lib").WSAStartup() 2.套接字的创建(服务器端是监听套 ...
- 用WINSOCK API实现同步非阻塞方式的网络通讯
Option Base 0Option Explicit '* ************************************************** *'* 模块名称:Winsock ...
- IIS 架构解析
我们在使用ASP.NET平台做web开发的时候,经常会接触到IIS(Internet Information Services 互联网信息服务).这篇文章主要来介绍IIS7.0+的架构.IIS的安全脆 ...
- linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解
最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...
随机推荐
- .net图片自动裁剪白边函数案例
1.项目要求上传白底的图片要进行裁剪白边,于是同事谢了个函数感觉很好用. 2. #region 剪切白边 /// <summary> /// 剪切白边 /// </summary&g ...
- 并行编程之PLINQ
并行编程之PLINQ 并行 LINQ (PLINQ) 是 LINQ 模式的并行实现.PLINQ 的主要用途是通过在多核计算机上以并行方式执行查询委托来加快 LINQ to Objects 查询的执行速 ...
- 跨域访问 REST API
跨域访问 Web Service (REST API) 虽然 JQuery 也能通过授权header实现跨域, 但SharePoint 提供了更简单的方法,它被实现在SP.RequestExecuto ...
- Design Thinking BrainWalk
Design Thinking Design Thinking Workshop @ Agile Tour 2013 Shanghai 摘要: 设计思维工作坊上周日在2013年敏捷之旅上海站,引导 ...
- sublime text 3 插件:package control
sublime text 3安装package control import urllib.request,os,hashlib; h = 'eb2297e1a458f27d836c04bb0cbaf ...
- IE回车的怪异行为
问题 IE浏览器在input中回车,会触发button按钮的click事件. 原因分析 IE浏览器中在input中回车相当于提交form,而button标签默认的类型是submit, 所以如果没有指定 ...
- CSS position overflow float 属性 详解
position overflow float 几个属性比较容易混淆,写一段代码详解各自具体情况: position在w3school的可能取值: 值 描述 absolute 生成绝对定位的元素,相 ...
- ios7上隐藏status bar
在iOS7上 对于设置status bar 又有了点点的改变 1.对于 UIViewController 加入了动态改变 status bar style的方法 - (UIStatusBarStyle ...
- Aliexpress API 测试工具
Aliexpress API 测试工具 上回简单说了 Aliexpress API 的认证流程, 这回在奉送一个小工具, API 测试工具. 点我下载 做这一行,和做程序员的生活完全不搭调, 格格不入 ...
- EL表达式与三目运算符
在页面实现常量替换,比如 entity.auditi 的值如果为0显示不需要否则显示需要 因为需求就这两个值 所以使用三目运算符比较简洁 如果值为很多个 可使用if else进行判断 ${entit ...