Windows Sockets编程(二)套接字

12、套接字编程。

在使用套接字进行编程之前,无论是服务器还是客户端都必须加载Windows SOCKET动态库。

函数WSAStartup就实现了此功能。它是套接字应用程序必须调用的第一个函数。

int WSAStartup(  
   WORD wVersionRequested,  
   LPWSADATA lpwsadata);  

---第一个参数指定准备加载的Windows SOCKET动态库的版本。一般使用宏MAKEWORD构造。

如MAKEWORD(2,2)表示加载2.2版本。

---WSADATA会返回被加载动态链接库的基本信息。如是否加载成功,以及当前实际使用的版本。


13、初始化socket后,需要创建套接字。socket函数和WSASocket函数可以实现此功能。

SOCKET socket(  

         int af,  
         int type,  
         int protocol);  

---af表示使用协议的地址家族。创建TCP或UDP的套接字是使用AF_INET。

---type表示套接字的类型。有SOCK_STREAM、SOCK_DGRAM和SOCK_RAM三种类型。分别表示流、数据包、原始套接字。

---protocol指示使用的协议。对于SOCK_STREAM套接字类型,该字段可以为IPPROTO_TCP或0。对于SOCK_DGRAM套接字类型,该字段为IPPROTO_UDP或0。

当函数创建成功时,返回一个新建的套接字句柄(即描述符)。否则将返回INVALID_SOCKET。此时需要调用WSAGetLastError( )检索对应的错误值,提示用户失败的原因。


 
14、bind函数。创建套接字之后需要调用bind将其绑定到一个已知的地址上。

int   bind(

         SOCKET s,  

         const struct sockaddr *addr,  

         int namlen);  

---s为要绑定的套接字句柄,addr指向socket地址结构的指针。即要绑定的地址。

---namelen为sockaddr的长度。

注意:指向bind( )函数原型的指针引用总是通用地址结构socksddr。

函数调用成功将返回0,否则返回值为SOCKET_ERROR。

如果程序不关心分配给它的地址,可使用INADDR_ANY或将端口号设为0。端口号为0时,Windows SOCKET将给应用程序分配一个值在1024-5000之间唯一的端口号。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值