windows socket函数详解

JK转至:https://www.cnblogs.com/hgwang/p/6074038.html

流程图:

0:函数库头文件

#include <WinSock2.h>
#pragma comment(lib,"Ws2_32.lib ")

 

1:WSAStartup   初始化Ws2_32.dll的函数

WSAStartup 函数用于初始化供进程调用的Winsock相关的dll。

1 int WSAStartup(
2   __in          WORD wVersionRequested,
3   __out         LPWSADATA lpWSAData
4 );
Parameters
  wVersionRequested

标识了用户调用的Winsock的版本号。高字节指明辅版本编号,低字节指明主版本编号。通常使用MAKEWORD来生成一个版本号。 当前Winsock sockets的版本号为2.2,用到的dll是 Ws2_32.dll。

  lpWSAData

指向WSADATA结构体的指针,lpWSAData返回了系统对Windows Sockets 的描述

Return Value

如果调用成功,WSAStartup 函数返回0。否则,将返回五种错误代码之一。但绝对不能使用WSAGetLastError获取错误代码。

WSAData wsa;
    if (::WSAStartup(MAKEWORD(2,2),&wsa) != 0)
    {
        cout<<"WSAStartup error"<<endl;
        return 0;
    }

2:WSACleanup   释放Ws2_32.dl的l函数

该函数释放对Winsock链接库的调用。

int WSACleanup(void);

返回值0表示正常退出,返回值SOCKET_ERROR表示异常。返回值是SOCKET_ERROR,可以调用 WSAGetLastError.查看错误代码。需要注意的是,在多线程环境下,WSACleanup 函数将终止所有线程的socket操作。

3:socket   创建socket的函数

socket函数将创建指定传输服务的socket。

1 SOCKET WSAAPI socket(
2   __in          int af,
3   __in          int type,
4   __in          int protocol
5 );
Parameters

af   ( address family

  指明地址簇类型,常用的地址簇如下,其余地址簇在Winsock2.h中定义。

AF_UNSPEC(未指明)、

AF_INET(IPv4)、

AF_NETBIOS(NETBIOS地址簇)、

AF_INET6(IPv6)、

AF_IRDA(Infrared Data Association (IrDA)地址簇)、

AF_BTM(Bluetooth)。

type

  指明socket的类型,Windows Sockets 2常见类型如下:

SOCK_STREAM(流套接字,使用TCP协议)、

SOCK_DGRAM(数据报套接字,使用UDP协议)、

SOCK_RAW(原始套接字)、

SOCK_RDM(提供可靠的消息数据报文,reliable message datagram)、

SOCK_SEQPACKET(Provides a pseudo-stream packet based on datagrams,在UDP的基础上提供了伪流数据包)。

protocol

指明数据传输协议,该参数取决于af和type参数的类型。protocol参数在Winsock2.h and Wsrm.h定义。通常使用如下3中协议:

IPPROTO_TCP(TCP协议,使用条件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值