博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
套接字的域和地址族
阅读量:6930 次
发布时间:2019-06-27

本文共 1711 字,大约阅读时间需要 5 分钟。

  今天,说一下套接字的域和地址族。前面已经说到domain这个参数了,这个参数可以使AF_LOCAL.AF_LOCAL的前缀AF_表示地址族(address family),domain参数就是在选择到底使用哪个地址族。

  通用套接字地址的结构:

struct sockaddr {    sa_family_t sa_family;//地址族    char            sa_data[14];//地址数据};

其中sa_family_t是一个无符号的短整数。整个数据占16个字节。

  我们常见的domain参数一般是AF_INET(IPv4),AF_INET6(IPv6)。AF_INET的结构格式为:

#include 
struct sockaddr_in { sa_family_t sin_family;//地址族 uint16_t sin_port;//端口号 struct in_addr sin_addr;//Inernet地址 unsigned char sin_zero[8];//占位字节};

  说到网络字节问题,就需要考虑到网络字节序。因为字节序有些系统是不同的。为了实现大端/小端字节序之间的转换,系统提供了几个转换函数:

#include 
unsigned long htonl(unsigned long hostlong);unsigned short htons(unsigned short hostshort);unsigned long ntohl(unsigend long netlong);unsigned short ntohs(unsigned short netshort);

  有了前面的介绍,可以开始初始化Internet地址了。下面的例子使用了到了和函数。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
//error,用于输出错误static void bail(const char *on_what){ perror(on_what); exit(1);}int main(){ int sck_inet = socket(AF_INET,SOCK_STREAM,0);//套接口,套接字 if (sck_inet == -1) { bail("sock()"); } struct sockaddr_in adr_inet;//IPv4地址结构 memset(&adr_inet,0,sizeof adr_inet); adr_inet.sin_family = AF_INET; adr_inet.sin_port = htons(8081); const unsigned char IPno[] = { 127,0,0,23}; memcpy(&adr_inet.sin_addr.s_addr,IPno,4); int len_inet = sizeof adr_inet; int z = bind(sck_inet, (struct sockaddr*)&adr_inet,len_inet);//绑定套接字和ip地址 if (z == -1) { bail("bind()"); } system("netstat -pa --tcp 2>/dev/null | " "sed -n '1,/^Proto/p;/af_inet/p' "); close(sck_inet); return 0;}

  今天的套接字就介绍到这,下一篇要介绍的是地址转换函数

 

转载地址:http://ihkjl.baihongyu.com/

你可能感兴趣的文章
阻塞与死锁(三)——死锁的定位及解决方法
查看>>
当数据库某张表数据发生变化时,更新c#程序中缓存的用法
查看>>
在Windows的CMD中如何设置支持UTF8编码?
查看>>
jsonp
查看>>
mysql主从复制(一)
查看>>
ASP.NET MVC5+EF6+EasyUI 后台管理系统(60)-系统总结
查看>>
【转载】引擎工具开发的一些总结
查看>>
浮动的清除 -- 四种方法
查看>>
SpringMVC中利用@InitBinder来对页面数据进行解析绑定
查看>>
IDEA中MAVEN项目打JAR包的简单方法
查看>>
乐视云监控数据存放到influxdb中
查看>>
.NET Core容器化@Docker
查看>>
正则表达式
查看>>
如何独立运行 django脚本(需要settings时)_贪婪的小猪_百度空间
查看>>
jQuery UI dialog插件出错信息:$(this).dialog is not a function
查看>>
WPF中使用DataGridView创建报表控件
查看>>
spring开发_spring环境搭建
查看>>
file_get_contents函数的超时控制(default_socket_timeout)
查看>>
面向对象之多态性(基类引用可以指向子类)
查看>>
JAVA选项事件
查看>>