全部博文(573)
分类: LINUX
2015-12-04 16:29:05
通用的结构体:
编程时常用的
其中
某些函数调用时的参数必须是指向通用结构体的指针,到时一个强制转换即可
in_addr_t inet_addr(const char *cp);
in_addr_t inet_network(const char *cp);
int inet_aton(const char *cp, struct in_addr *inp);
char *inet_ntoa(struct in_addr in);
前两个函数分别将字符串形式的IP转换为网络字节序和主机字节序的IP,返回IP结构。
inet_aton将第一个参数字符串形式IP转换成网络字节序IP存入第二个参数 指向IP结构体的指针
inet_ntoa将IP结构体中IP转换成点分式IP字符串并返回。
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
inet_aton("127.0.0.1",&address.sin_addr);
printf("IP is ntoa: %s/n",inet_ntoa(address.sin_addr));
两个通过套接字描述符获取套接字结构的函数
int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
把第一个参数文件描述服对应的套接字结构存入第二个参数套接字结构指针所指向的套接字结构体中,第三个参数为指向所获取的套接字结构大小整数的指针,该整数一般为16。
区别在于前者用于获取本地套接字,后者用于远程在客户端调用前者,得到自己的,调用后者得服务器的,在服务器端情况正好相反