国际视野 要闻天下 财经纵横 产经要闻 楼市房产 汽车要闻 科技前沿 IT互联网 军情速递 体育要闻 娱乐要闻 美食旅游
您的位置:首页 / 博览纵横
sockaddr_in填值的时候使用sockaddr_in结构
中国要闻网 2022-01-12

     SOCKADDR_IN是对于IPv4,并为sockaddr_in6的IPv6的。这种混乱对我来说是SOCKADDR和SOCKADDR_IN之间的差异。sockaddr_in 是internet环境下套接字的地址形式。所以在网络编程中我们会对sockaddr_in结构体进行操作。使用sockaddr_in来建立所需的信息,最后使用类型转化就可以了。

      sockaddr_in把14个字节拆分成sin_port, sin_addr和sin_zero分别表示端口、ip地址。sin_zero用来填充字节使sockaddr_in和sockaddr保持一样大小。
      sockaddr_in这个结构也不复杂,除了一开始的2个字节表示sin_family,然后是2个字节的变量sin_port表示端口,接着是4个字节的变量sin_addr表示IP地址,最后是8个字节变量sin_zero填充尾部,用来与结构sockaddr对齐。
填值的时候使用sockaddr_in结构,而作为函数(如socket, listen, bind等)的参数传入的时候转换成sockaddr结构就行了,毕竟都是16个字符长。
      通常的用法是: 
      int   sockfd; 
      struct   sockaddr_in   my_addr; 
      sockfd   =   socket(AF_INET,   SOCK_STREAM,   0);    
      my_addr.sin_family   =   AF_INET;    
      my_addr.sin_port   =   htons(MYPORT);    
      my_addr.sin_addr.s_addr   =   inet_addr("192.168.0.1"); 
      bzero(&(my_addr.sin_zero),   8);    
      bind(sockfd,   (struct   sockaddr   *)&my_addr,   sizeof(struct   sockaddr))

网友评论
(查看全部 0 条评论)请遵守国家新闻相关法规,文明上网评论!
    
验证码:  
网文摘要

   飞凯材料2021年年报正式发布。财报显示,飞凯材料2021年营收26.3亿元,较去年同期上涨41%;扣非净利润为3.2亿元...[详细]评论(0)

  日薪几千是最近一段时间以来上海跑腿小哥的常态。一位上海的消费者向《财经天下》周刊感慨...[详细]评论(0)

     在古时候是没有天气预报这一说的,但是古人有自己的智慧,通过总结历年...[详细]评论(0)

    谷歌计划到2030年实现的下一个目标是全天候使用无碳能源,也就是在每一天的每...[详细]评论(0)

       科技日报:地表可燃物的分解速率受地表温度、湿度以及微生物作用的影响,也取决于可燃...[详细]评论(0)

    当前在人工智能场景应用上面的独特优势,以及现在教育、医疗这些需要补短板的民生领域的迫切需求,带动了...[详细]评论(0)

热点排行 更多
博览纵横 更多
CHNNEWS 更多
  • All Right Reserved @ 2005-2022 中国要闻网
  • 工商营业注册:110101014752254
  • 增值电信业务经营许可证:京A2-2009413