套接字地址结构及其创建

1.套接字的地址结构

结构struct sockaddr定义了一种通用的套接字地址, 它在头文件linux/socket 中定义: struct socketsddr{ unsigned short   sa_family;                 //地址类型,AF_xxx char       sa_data[14];                         // 14字节的协议地址 }; 其中sa_family表示套接字的协议族类型,对应于TCP/IP协议的AF_INET,成员sa_data存储具体的协议地址,sa_data之所以被定义成14字节的,因为有的协议族使用较长的地址格式,一般编程中并不对该结构体进行操作,而是使用另一个与它等价的数据结构:sockaddr_in. 每种协议族都有自己的协议地址格式,TCP/IP地址的格式为结构体struct sockaddr_in, 它在头文netinet/in.h中定义.格式如下: struct sockaddr_in{ unsigned short                        sin_family;          //地址类型 unsigned     short  int               sin_port;                  //端口号 struct     in_addr                          sin_addr;             //IP地址 unsigned   char                         sin_size[8];           //填充字节一般为0 }; struct in_addr的定义如下: struct in_addr{ unsigned    long     s_addr; }; 结构体sockaddr的长度为16 字节,结构体sockaddr_in的长度也为16字节 ,通常使用sockaddr_in设置地址,然后强制类型转换为sockaddr; 来看例子:

struct sockaddr_in  sock;
sock.sin_family=AF_INET;
sock.sin_port=htons(80);  //设置端口
sock.sin_addr.s.addr=inet_addr("222.102.3.165");  //设置地址
memset(sock.sin_zero,0,sizeof(sock.sin_zero));  //将数组sin_zero清零

其中memet(void *s,int c,size_t  n); 它将s指向的内存区域的前n个字节赋值由参数c 指定的值; 其中清零的字节处理函数还有bzero(),bcopy(),memcpy()等; void  bzero(void *s,int  n); 函数的具体操作是将参数s指定的前n个字节清零,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值