inet_pton(AF_INET,"127.0.0.1", &servaddr.sin_addr);/*强制转换成struct sockaddr*/connect(sockfd, (structsockaddr *) &servaddr,sizeof(servaddr)); sockaddr_in.sin_addr.s_addr也可以使用htonl赋值 servaddr.sin_addr.s_addr=htonl(INADDR_ANY);...
inet_addr()作用是将一个IP字符串转化为一个网络字节序的整数值,用于sockaddr_in.sin_addr.s_addr。 inet_ntoa()作用是将一个sin_addr结构体输出成IP字符串(network to ascii)。比如: printf("%s",inet_ntoa(mysock.sin_addr)); htonl()作用和htons()一样,不过它针对的是32位的(long),而htons()针对...
给in_addr赋值的一种最简单方法是使用inet_addr函数,它可以把一个代表IP地址的字符串赋值转换为in_addr类型,如addrto.sin_addr.s_addr=inet_addr("192.168.0.2"); 其反函数是inet_ntoa,可以把一个in_addr类型转换为一个字符串。 虽然是两个结构体可是二者的占用的内存是一致的,因此可以互相转化。 sockaddr常...
SOCKADDR_IN *addr=(sockaddr_in *)pSockAddr;addr->sin_family=AF_INET;if (szIP&&strlen(szIP)>0){ if (isalpha(szIP[0])){ hostent *remoteHost=gethostbyname(szIP);if (!remoteHost){ return -1;} addr->sin_addr= *((in_addr *)*remoteHost->h_addr_list);} else { addr-...
sockaddr_in是系统封装的一个结构体,具体包含了成员变量:sin_family、sin_addr、sin_zero 这个结构体被封装在ws2def.h中,具体的代码如下: typedef struct sockaddr_in { #if(_WIN32_WINNT 0x0600)_牛客网_牛客在手,offer不愁
sin_addr是一个联合体,用联合体就可以使用多种方式表示IP地址。一般我们使用其中的最后一种方式,即用无符号长整型数据来表示IP地址。此时,用的是s_nu数据成员,s_un是一个结构体,其中只有一个数据成员,即s_addr。使用方式:变量.sin_family=AF_INET;变量.sin_addr.S_un.S.addr=htonl("IP...
在in_addr结构体中,s_addr按照网络字节顺序存储IP地址。 sin_zero用来将sockaddr_in结构填充到与struct sockaddr同样的长度,可以用bzero()或memset()函数将其置为零。 指向sockaddr_in的指针和指向sockaddr的指针可以相互转换,这意味着如果一个函数所需参数类型是sockaddr类型时,你可以在函数调用的时候将一个指向sockad...
sockaddr_in是专门用于表示IPv4地址的结构体,其定义如下: struct sockaddr_in { short int sin_family; // 地址类型,必须是AF_INET unsigned short int sin_port; // 端口号,范围是0-65535 struct in_addr sin_addr; // IPv4地址 char sin_zero[8]; // 填充字节,保证与sockaddr的长度一致 ...