第三章 套接字编程(1) - 套接字地址结构

原创 2015年11月20日 15:05:43
套接字地址结构
1. IPv4套接字地址结构
   IPv4套接字地址结构通常称为“网际套接字地址结构”,它以sockadd_in命名,定义在

<netinet/in.h>头文件中。
   struct in_addr{
       in_addr_t s_addr;     /*32位IPv4地址,网络字节序*/
   };
   
   struct sockaddr_in{
        uint8_t         sin_len;
        sa_family_t     sin_family;  /*AF_INET*/
        in_port_t       sin_port;    /*16位TCP或者UDP端口号,网络字节序*/
        struct in_addr  sin_addr;    /*32位IPv4结构,网络字节序*/
        char            sin_zero[8]; /*未使用*/
   };

POSIX规范只需要这个结构中的3个字段:sin_family、sin_addr和sin_port。


2. 通用套接字地址结构
    当作为一个参数传递给任何套接字函数时,套接字地址结构总是以引用形式(也就是以指向该结构的指针)来传递。然而以这样的指针作为参数之一的任何套接字函数必须处理来自所支持的任何协议族的套接字地址结构。
    在<sys/socket.h>头文件中定义一个通用的套接字地址结构如下:
    struct sockaddr{
        uint8_t       sa_len;
        sa_family_t   sa_family;  /*地址族:AF_xxx*/
        char          sa_data[4];  /**/

    };


3. 值-结果参数

(1) 从进程到内核传递套接字地址结构的函数有3个:bind、connect和sendto。这些函数的一个参数是执行某个套接字地址结构的指针,另一个参数是该结构的证书大小。

将指针和指针所指向内容的大小都传递给内核,于是内核知道到底需从进程复制多少数据。

(2) 从内核到进程传递套接字地址结构的函数有4个:accept、recvfrom、getsockname和getpeername。这4个函数的其中两个参数指向某个套接字地址结构的指针和指向表示该结构大小的整数变量的指针

当函数背调用时,结构大小是一个值,它告诉内核该结构的大小,这样内核在写该结构时不至于越界;当函数返回时,结构大小又是一个结构,它告诉进程内核在该结构中究竟存储了多少信息。


版权声明:本文为博主原创文章,未经博主允许不得转载。

TCP/IP协议的连接与释放的三次握手过程及Socket套接字

socket 套接字:为了使得多主机多进程通信时,不至于发生混乱情况,必须把端口号和主机的IP地址结合起来使用, 称为插口或套接字。 由于主机的IP地址是唯一的,这样目的主机就可以区分收到的数据报的源...
  • u011392772
  • u011392772
  • 2015年01月27日 11:27
  • 1330

linux网络编程之套接字(套接口)、ip、端口理解

1、套接字、ip、端口介绍 1)、套接字 源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。 它是网络通信过程中端点的抽象表示,包含进行网络通信必...
  • u011068702
  • u011068702
  • 2017年02月22日 10:32
  • 1303

TCP/IP网络编程 学习笔记_3 --给套接字分配IP地址和端口号

IP地址和端口号1,IP地址:为使计算机连接到网络并收发数据,必须为其分配IP地址。IP地址分为两类:IPv4(4字节地址族)和IPv6(16字节地址族)。它们主要区别就是在表示IP地址所用的字节数,...
  • u010223072
  • u010223072
  • 2015年07月09日 17:16
  • 3771

Unix网络编程 卷1 第3章:套接字编程简介(套接字地址结构)

一、IPv4套接字地址结构 IPv4套接字地址结构通常称为“网际套接字地址结构”,它以sockadd_in命名。头文件及声明如下: #include struct sockaddr_in{ ...
  • iFuMI
  • iFuMI
  • 2016年09月09日 19:58
  • 410

UNIX网络编程卷1:套接字联网-第3章:套接字编程-套接字地址结构和值结果参数

套接字地址结构: 首先找到定义套接字地址结构的文件,我使用的ubuntu14.04,路径:/usr/include/netinet/in.h 1.IPV4套接字地址结构 2.IPV6套接字...
  • tiankong_
  • tiankong_
  • 2017年07月04日 16:58
  • 148

我的网络编程学习之路——套接字地址结构

1.套接字地址结构 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议族都定义它自己的套接字地址结构。这些结构的名字均以sockaddr_开头,并以对应每个协议族的唯一后缀结尾。 1...
  • huangjh2017
  • huangjh2017
  • 2017年06月13日 20:11
  • 167

unix网络编程第一卷学习之套接字地址结构

1.ipv4的地址结构 ipv4的地址结构通常以“sockaddr_in”命名,定义在头文件中。套接字中肯定有地址和端口两项,还有用于区分协议族的一个字段,为了计算方便还有一个长度(unix域是变长...
  • fenguy
  • fenguy
  • 2013年04月03日 17:01
  • 413

Unix网络编程(一)-套接字地址结构

本文为学习经验的总结,绝大部分引用自Unix网络编程
  • u014070414
  • u014070414
  • 2014年08月06日 11:00
  • 355

Unix网络编程(二)套接字地址结构常用函数

注明:本文为学习经验的总结,绝大部分引用自Unix网络编程卷一,有错误或者交流意见请发邮件至yb.zhaoyubo@gmail.com.非常感谢 上篇文章简单介绍了几个金...
  • u014070414
  • u014070414
  • 2014年08月06日 13:49
  • 489

Unix网络编程(一):套接字地址结构

1. 简介在ubuntu下写socket程序时,经常会看到那几个sockaddr的struct, 总是反应不过来它们的区别是什么,因此需要整理并归纳一下这些结构。2. 特定IP协议的套接字地址结构1....
  • u013613341
  • u013613341
  • 2016年02月28日 23:18
  • 452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第三章 套接字编程(1) - 套接字地址结构
举报原因:
原因补充:

(最多只允许输入30个字)