wince软件开发人员应了解的socket网络编程二(摘录)

本文详细介绍了WSAStartup函数的作用、参数及使用方式,阐述了Winsock库在Windows编程中的重要性。同时,通过具体代码示例展示了如何正确地加载Winsock库,并解释了相关Winsock函数的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关函数说明:

int WSAStartup(

WORD wVersionRequested,

LPWSADATA lpWSAData

);

作用加载套接字库,协商套接字版本

函数说明:

wVersionRequested:用于指定准备加载的winsock库的版本,高位字节指定所需要的库的副版本,而低位则是主版本。可用MAKEWORD(x,y)(x是高位,y低位)获得正确值

lpWSAData是指向WSADATA结构的指针,WSAStartup用其加载的库版本有关的信息填在这个结构中

typedef struct WSAData {
WORD
wVersion;//
打算使用的winsock版本
WORD wHighVersion;//
现有的winsock库的最高版本
char szDescription[WSADESCRIPTION_LEN+1];//
由特定的winsock实施方案设定,没有使用
char szSystemStatus[WSASYS_STATUS_LEN+1];// //
由特定的winsock实施方案设定,没有使用

unsigned short iMaxSockets;//
不用
unsigned short iMaxUdpDg;//
不用
char FAR* lpVendorInfo;//
厂商信息,可不使用

} WSADATA,
*LPWSADATA;

对于每一个WSAStartup的成功调用,在最后都对应一个WSACleanUp调用,以便释放为该应用程序分配的资源,并卸载WinSockDLL

Winsock相关函数说明:

SOCKET socket(
  int af,//地址族,只能为AF_INET
  int type,//socket类型
  int protocol//指定为0,自动选择一个合适的协议
);

int bind(
  SOCKET s,
  const struct sockaddr* name,//本地地址信息,长度由第三个参数确定,因为它是为所有的地址家庭准备的,该结构可能随所使用的网络协议不同而不同
  int namelen
);
TCP/IP中可用下面的结构体替换sockaddr,注意除了成员sin_family外,均以网络字节序表示
struct sockaddr_in {
         short    sin_family;//地址族
         u_short sin_port;//端口
         struct  in_addr sin_addr;//主机IP地址
 char     sin_zero[8];//只是一个填充数,以使sockaddr_in结构和sockaddr结构的长度一样
};
typedef struct in_addr {
union {
    struct {
      u_char s_b1,s_b2,s_b3,s_b4;
    } S_un_b;
    struct {
      u_short s_w1,s_w2;
    } S_un_w;
    u_long S_addr;
} S_un;
} in_addr;
 
Inet_addr()_数会返回一个适合分配给S_addrulong类型的数值,inet_ntoa会完成相反的转换,它接受一个in_addr结构体类型的参数并返回一个以点分十进制格式表示的IP地址字符串
 
SOCKET accept(
  SOCKET s,
  struct sockaddr* addr,//out,保存连接到服务器的客户机的IP地址等信息
  int* addrlen//out,msdn有错误,此参数在传递时必须赋一个初始值,但MSDN并没有说明这一点
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值