WSASocket()函数使用解析

详情参阅:https://msdn.microsoft.com/en-us/library/ms742212(VS.85).aspx

WSASocket()

简述

The WSASocket function creates a socket that is bound to a specific transport-service provider.

和socket的区别:

  winsock是socket的windows平台的实现。

  winsock是微软专门为windows操作系统开发的socket网络编程接口,而socket是通用网络编程接口。

  socket() 函数创建一个通讯端点并返回一个套接口。但是在socket库中例程在应用于阻塞套接口时会阻塞。

  WSASocket()的发送操作和接收操作都可以被重叠使用。接收函数可以被多次调用,发出接收缓冲区,准备接收到来的数据。发送函数也可以被多次调用,组成一个发送缓冲区队列。

  可是socket()却只能发过之后等待回消息才可做下一步操作!

函数原型

SOCKET WSASocket(
  _In_ int                af,
  _In_ int                type,
  _In_ int                protocol,
  _In_ LPWSAPROTOCOL_INFO lpProtocolInfo,
  _In_ GROUP              g,
  _In_ DWORD              dwFlags
);

参数

  af:地址族描述。目前仅支持PF_INET格式,亦即ARPA Internet地址格式。

  type:新套接口的类型描述。  

  protocol:套接口使用的特定协议,如果调用者不愿指定协议则定为0。

  lpProtocolInfo:一个指向PROTOCOL_INFO结构的指针,该结构定义所创建套接口的特性。如果本参数非零,则前三个参数(af, type, protocol)被忽略。

  g:套接口组的描述字。

  dwFlags:套接口属性描述。

返回值  

  若无错误发生,WSASocket()返回新套接口的描述字。否则的话,返回 INVALID_SOCKET,应用程序可以调用WSAGetLastError()来获取相应的错误代码。

错误代码

  WSANOTINITIALISED                在调用本API之前应成功调用WSAStartup()。

  WSAENETDOWN                      网络子系统失效。

  WSAEAFNOSUPPORT              不支持指定的地址族。

  WSAEINPROGRESS                 一个阻塞的WinSock调用正在进行中,或者服务提供者仍在处理一个回调函数

  WSAEMFILE                              无可用的套接口描述字。

  WSAENOBUFS                          无可用的缓冲区空间。套接口无法创建。

  WSAEPROTONOSUPPORT      不支持指定的协议。

  WSAEPROTOTYPE                  指定的协议对于本套接口类型错误。

  WSAESOCKTNOSUPPORT      本地址族不支持指定的套接口类型。

  WSAEINVAL                               g参数非法。

时间: 2024-09-30 11:25:11

WSASocket()函数使用解析的相关文章

关于函数的解析顺序

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>函数的解析顺序</title> </head> <body> <script type="text/javascript"> function f(){ return 1; } alert(f()); //4,说明第一个函数被第四个函数覆盖 v

CImageList类Create函数参数解析

前面提到了CImageList类的Create(...)函数,虽然MSDN上已经有所解释,但仍有网友问到参数的具体含义,下面就我的理解,对参数进行一次轻量级的剖析 函数原型(其他重载函数请参看msdn):   BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow ); cx ,cy: 图片的实际像素宽与高,没有问题 nFlags:创建图像列表的类型,包括4/8/16/24/32/位色, nInitial : 创建Ima

C++的那些事:函数全解析

一.函数的结构 函数在C++中可能出现在三种地方,一是函数的定义,它包括了如上图的结构:二是函数的声明,它与函数的定义相比,没有了函数体部分:三则是函数的调用.当然,不同的函数定义可以还会稍有不同,比如类的成员函数.内联函数等.这里我们主要讨论函数的调用时需要注意的一些问题. 二.参数传递 我们将函数定义或声明里的参数叫形参,而在调用函数时传入的参数叫实参.那么根据形参类型的不同,有几下形式的参数传递. 1,非引用形参 1)普通的内置类型 普通非引用类型的参数通过复制对应的实参实现形参的初始化.

cmake函数参数解析

最近在迁移公司的make系统到cmake上,发现cmake的function参数很奇怪.例如,如果我们向一个function传递list作为参数,在function中,形参会变成如下状况: set(SRC) list(APPEND SRC a.cpp b.cpp) list(APPEND SRC c.cpp d.cpp) function(tst_arguments src_list) message("src_list = "${src_list}) endfunction() me

Mysql研究之MySQL常用内置函数完全解析

说明: 1)可以用在SELECT/UPDATE/DELETE中,及where,orderby,having中 2)在函数里将字段名作为参数,变量的值就是字段所对应的每一行的值. 3)在程序设计语言如C++中提供的函数,MySQL大部分也提供了,关于MySQL函数的完整信息,请参阅<MySQL参考手册> 一.字符串函数[比较常用,需要掌握] 1. concat(s1,s2,…,sn) #把传入的参数连接成一个字符串 selectconcat(‘abc’,’def’); selectconcat(

php 函数strtr 替换函数实例解析 strtr 速度比较快

先来看看这个php字符串替换函数 PHP字符串替换函数strtr()的两种状态 strtr(string,from,to) 或者strtr(string,array) 首先针对PHP字符串替换函数strtr()第一种方式 我们看看下面的举例: <?php echo strtr("I Love you","Lo","lO"); ?> 得到的结果是 I lOve yOu 这个结果提醒我们 1.strtr它是区分大小写的 2.PHP字符串替

discuz 使模板中的函数不解析 正常使用

<!--{if $_GET['zcdw']=="baxi"}--><!--{eval $duiwuxinxi = "巴西队";}--><!--{elseif $_GET['zcdw']=="deguo"}--><!--{eval $duiwuxinxi = "德国队";}--><!--{elseif $_GET['zcdw']=="agenting"}-

Generator函数语法解析

转载请注明出处: Generator函数语法解析 Generator函数是ES6提供的一种异步编程解决方案,语法与传统函数完全不同.以下会介绍一下Generator函数. 写下这篇文章的目的其实很简单,是想梳理一下自己对于Generator的理解,同时呢,为学习async函数做一下知识储备. Generator函数 基本概念 yield表达式 next方法 next方法的参数 yield*表达式 与Iterator接口的关系 for...of循环 作为对象属性的Generator函数 Gener

0143 JavaScript预解析:概念、变量预解析、函数预解析、函数表达式声明函数问题

4.1 预解析的相关概念 JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的. JavaScript 解析器在运行 JavaScript 代码的时候分为两步:预解析 和 代码执行. 预解析:在当前作用域下, JS 代码执行之前,浏览器会默认把带有 var 和 function 声明的变量在内存中进行提前声明或者定义. [提升到当前作用域的最顶部.] 代码执行: 从上到下执行JS语句. 预解析会把变量和函数的声明在代码执行之前执行完成.[声明提前,赋值留在原地.] 4.