WinSocket 函数解析(新手篇)(一)

 
1、WSAStartup
     函数结构:
     Int WSAStartup(WORD wVersionRequested,
                               LPWSDATA lpWSAData)
    作用:
    载入合适的Winsock动态链接库
    参数解析:
    wVersionRequested:指定加载的WinSocket版本信息,windows2000后面采用罪行的0x0202版本,用宏        MAKEWODE(X,Y)获得wVersionRequested,X高位字节,Y地位字节

  lpWSAData:指向LPWSAData的机构体,
       typedef struct WSAData
      {
            WORD wVersion;
            WORD wHighVersion;
            Char szDescription[WSDESCRIPTION_LEN + 1];

            Char szSystemStatus[WSASYS_STATUS_LEN + 1];

            Unsigned short iMaxSockets;
            Unsigned short iMaxUdpDg;
            Char FAR * lpVendorInfo;
      }
    wVersion为你将使用的Winsock版本号,wHighVersion为载入的Winsock动态库支持的最高版本,注意,它们的高节代表次版本,低字节代表主版本。
     szDescription与szSystemStatus由特定版本的Winsock设置,实际上没有太大用处。
     iMaxSockets表示最大数量的并发Sockets,其值依赖于可使用的硬件资源。
     iMaxUdpDg表示数据报的最大长度;然而,获取数据报的最大长度,你需要使用WSAEnumProtocols对协议进行查询。最大数量的并发Sockets并不是什么神奇的数字,它是由可用的物理资源来决定的.
     lpVendorInfo是为Winsock实现而保留的制造商信息,这个在Windows平台上并没有什么用处.
 
    Windows 95 采用的winsocket版本是1.1(可以升级到2.2), windows 98 后采用的都是2.2,windows CE只能支持winsocket1.1版本


2、WSAClearup
     函数结构:
     Int WSAClearup(void)
     函数作用:
     释放WinSocket的连接,必须与WSAStartup成对出现


3、WSAGetLastError
     函数结构
     Int WSAGetLastError(void)
     函数作用:
     获取错误信息,WinSocket函数调用失败都会返回-1(SOCKET_ERROR),通过WSAGetlastError函数可以获得更详细的信息
    常见的错误:
       WSANOTINITIALISED: WSAStratup没有正确启动
       WSAENETDOWN:
       ….
       可以查询MSDN Windows Sockets Error Codes


4、socket/WSASocket
     函数结构:SOCKET WSASocket(int af,
                                                      Int type,
                                                      Int protocol,
                                                      LPWSAPROTOCOL_INFO lpWSAProtocolInfo,
                                                      GROUP g,
                                                      DWORD dwFlags)
                     SOCKET socket(int af,
                                                Int type,
                                                Int protocol)
     函数作用:创建SOCKET实例(套接口)
     参数解析:
        af:地址族描述。目前仅支持PF_INET格式,亦即ARPA Internet地址格式。
    type:新套接口的类型描述。
    protocol:套接口使用的特定协议,如果调用者不愿指定协议则定为0。
lpProtocolInfo:一个指向PROTOCOL_INFO结构的指针,该结构定义所创建套接口的特性。如果本参数非零,则前三个参数(af, type, protocol)被忽略。
   g:套接口组的描述字。
   iFlags:套接口属性描述。
   返回值:
           若无错误发生,WSASocket()返回新套接口的描述字。否则的话,返回 INVALID_SOCKET,应用程序可定调用      WSAGetLastError()来获取相应的错误代码。
   错误代码:
       WSANOTINITIALISED 在调用本API之前应成功调用WSAStartup()。
       WSAENETDOWN 网络子系统失效。
       WSAEAFNOSUPPORT 不支持指定的地址族。
           WSAEINPROGRESS 一个阻塞的WinSock调用正在进行中,或者服务提供者仍在处理一个回调函数
       WSAEMFILE 无可用的套接口描述字。
       WSAENOBUFS 无可用的缓冲区空间。套接口无法创建。
       WSAEPROTONOSUPPORT 不支持指定的协议。
       WSAEPROTOTYPE 指定的协议对于本套接口类型错误。
       WSAESOCKTNOSUPPORT 本地址族不支持指定的套接口类型。
       WSAEINVAL g参数非法。
       实例代码:
       // 创建TCP套接字
      SOCKET s = socket(AF_INET, SOCK_STREAM, IPPRPTP_TCP);
     

       不同的协议创建的套接字都一样,详见WINDOWS网络编程技术 第六章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值