bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)); 二、inet_addr、 inet_aton、inet_ntoa inet_addr: 将网络地址转为网络二进制数字,返回的IP地址是网络序的。函数原型: unsigned long in inet_addr(const char *cp) inet_aton:将网络地址转为网络二进制数字,与inet_addr的区别是,结...
一、结构体 struct sockaddr_in, struct sockaddr, struct in_addr struct sockaddr_in, struct sockaddr,struct in_addr,这是网络编程中常用的结构体,每次都记不住它们各自的成员是啥,需要临时查,为方便以后的查看,在这里总结下。 struct sockaddr { unsigned short sa_family; /* 地址族, AF_xxx */ char s...
int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen); 9 recvfrom() 头文件: #include <sys/types.h> #include <sys/socket.h> 函数原型: int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, i...
structin_addr sin_addr;// IPv4 地址结构 charsin_zero[8];// 填充位,用于补齐长度与 sockaddr 相同 }; structin_addr{ unsignedlongs_addr;// 存储 IP 地址的无符号长整型变量 }; 因此,struct sockaddr_in主要用于表示 IPv4 的地址信息,而struct sockaddr则是一个更通用的地址结构,在不同协议族之间转换时...
struct sockaddr是通用的套接字地址。 struct sockaddr_in是internet环境下套接字的地址形式。 两者的长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr结构。一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。 struct sockaddr_in servaddr; bind(socket...
换句话说,这时sockaddr可以当作sockaddr_in看 Sockfd是调用socket函数返回的socket描述符,my_addr是个指向包含有本机IP地址及端口号等信息的sockaddr类型的指 针;addrlen常被设置为sizeof(struct sockaddr)。 structsockaddr结构类型是用来保存socket信息的:
struct sockaddr_in是已经声明了的结构名,这里当作类型名来使用,如基础类型名int,double等等,addr被声明为struct sockaddr_in类型的变量,就像int a;中的a一样。
当需要绑定IPv6时,可以使用bind()函数,并且参数中的sockaddr结构体类型应为struct sockaddr_in6。例如: intsockfd=socket(AF_INET6,SOCK_STREAM,0);// 创建IPv6套接字 structsockaddr_in6 addr;// IPv6地址结构体 memset(&addr,0,sizeof(addr));// 清空结构体 ...
TCPStream :: TCPStream(int sd,struct sockaddr_in * address):msd(sd){char ip [50]; inet_ntop(PF_INET,(struct in_addr *)&(address-> sin_addr.s_addr),ip,sizeof(ip)-1); m_peerIP = ip; ...
sizeof(structin_addr)]; /* 字符数组sin_zero[8]的存在是为了保证结构体struct sockaddr_in的大小和结构体struct sockaddr的大小相等 */ }; struct sockaddr是通用的套接字地址,而struct sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节。