sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un
来源:互联网 发布:乐视电视无法连接网络 编辑:程序博客网 时间:2024/05/06 05:21
typedef __kernel_sa_family_t sa_family_t;
struct sockaddr {
sa_family_t sa_family; /* address family, AF_xxx*/
char sa_data[14];/* 14 bytes of protocol address*/
};
---16个字节长度
struct in_addr {
__be32 s_addr;
};
#define __SOCK_SIZE__ 16/* sizeof(struct sockaddr)*/
struct sockaddr_in {
__kernel_sa_family_t sin_family;/* Address family*/
__be16 sin_port;/* Port number*/
struct in_addr sin_addr;/* Internet address*/
/* Pad to size of `struct sockaddr'. 补充到16个字节长度 */
unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
sizeof(unsigned short int) - sizeof(struct in_addr)];
};
struct in6_addr {
union {
__u8 u6_addr8[16];
__be16 u6_addr16[8];
__be32 u6_addr32[4];
} in6_u;
#define s6_addr in6_u.u6_addr8
#define s6_addr16 in6_u.u6_addr16
#define s6_addr32 in6_u.u6_addr32
};
struct sockaddr_in6 {
unsigned short intsin6_family; /* AF_INET6 */
__be16 sin6_port; /* Transport layer port # */
__be32 sin6_flowinfo; /* IPv6 flow information */
struct in6_addrsin6_addr; /* IPv6 address */
__u32 sin6_scope_id; /* scope id (new in RFC2553) */
};
typedef unsigned short __kernel_sa_family_t;
#define UNIX_PATH_MAX 108
struct sockaddr_un {
__kernel_sa_family_t sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX];/* pathname */
};
char *get_ip_str(const struct sockaddr *sa, char *s, size_t maxlen)
{
switch(sa->sa_family) {
case AF_INET:
inet_ntop(AF_INET, &(((struct sockaddr_in *)sa)->sin_addr),
s, maxlen);
break;
case AF_INET6:
inet_ntop(AF_INET6, &(((struct sockaddr_in6 *)sa)->sin6_addr),
s, maxlen);
break;
default:
strncpy(s, "Unknown AF", maxlen);
return NULL;
}
return s;
}
- sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un
- sockaddr,sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详解
- ZZ: linux IPV4 IPV6 sockaddr 几个结构体及其关系: sockaddr sockaddr_in sockaddr_in6
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- struct sockaddr、sockaddr_in、sockaddr_un的区别和联系
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- struct sockaddr、sockaddr_in、sockaddr_un的区别和联系
- linux网络编程之sockaddr、sockaddr_in和sockaddr_un
- struct sockaddr struct sockaddr_in struct sockaddr_un 结构详解
- sockaddr&sockaddr_in
- Nagios
- web集群时session同步的3种方法
- 话说程序员的职业生涯-转载
- 软件随想录(local.joelonsoftware.com/wiki)-2001年11月20日 操练严格才好打仗 - A Hard Drill Makes an Easy Battle
- svn插件遇见的问题汇总(更新中)
- sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un
- poj 1201 差分约束
- 【Apache Hadoop系列】Hadoop1.0.4+zookeeper3.5.4+hbase0.94.5分布式部署
- Centos 修改当前路径显示为全路径
- 三层交换机VLAN配置方法
- ORA-30649: 缺少DIRECTORY关键字的问题解决方法
- Logger.getLogger()和LogFactory.getLog()的区别
- 临界区的理解
- Delphi中Create(nil),Create(self),Create(Application)区别