• Socket编程实践(2) --Socket编程导引


    什么是Socket?

        Socket能够看成是用户进程内核网络协议栈的接口(编程接口, 例如以下图所看到的), 其不仅能够用于本机进程间通信。能够用于网络上不同主机的进程间通信, 甚至还能够用于异构系统之间的通信。

     

    IPv4套接口地址结构

        IPv4套接口地址结构通常也称为“网际套接字地址结构”。它以“sockaddr_in”命名,定义在头文件<netinet/in.h>中

    //TCP/IP地址结构
    struct sockaddr_in
    {
        uint8_t  sin_len;
        sa_family_t  sin_family;
        in_port_t	sin_port;	//2字节
        struct in_addr	sin_addr;	//4字节
        char sin_zero[8];	//8字节
    };

    成员说明:

        sin_len:整个sockaddr_in结构体的长度。在4.3BSD-Reno版本号之前的第一个成员是sin_family.

        sin_family:指定该地址家族。对于IPv4来说必须设为AF_INET

        sin_port:端口

        sin_addr:IPv4的地址;

        sin_zero:暂不使用。一般将其设置为0

     

    Linux结构(经常使用):

    struct sockaddr_in
    {
        sa_family_t    sin_family; /* address family: AF_INET */
        in_port_t      sin_port;   /* port in network byte order(网络字节序) */
        struct in_addr sin_addr;   /* internet address */
    };
    /* Internet address. */
    struct in_addr
    {
        uint32_t       s_addr;     /* address in network byte order */
    };

    通用地址结构

    用来指定与套接字关联的地址(能够支持其它协议).

    struct sockaddr
    {
    	uint8_t  sin_len;
    	sa_family_t  sin_family;
    	char sa_data[14]; 	//14字节   
    };

    说明:

        sin_len:整个sockaddr结构体的长度

        sin_family:指定该地址家族

        sa_data:由sin_family决定它的形式。

     

    网络字节序

    1.大端字节序(Big Endian)

        最高有效位(MSB:Most Significant Bit)存储于最低内存地址处。最低有效位(LSB:Lowest Significant Bit)存储于最高内存地址处。

    2.小端字节序(Little Endian)

        最高有效位(MSB:Most Significant Bit)存储于最高内存地址处,最低有效位(LSB:Lowest Significant Bit)存储于最低内存地址处。

    相关阅读:
    项目三.
    项目二
    项目一.
    第三季-第27课-Shell脚本高级编程
    第三季-第26课-守护进程设计
    第三季-第26课-网络并发服务器设计
    第三季-第25课-UDP通讯程序设计
    刷新页面
    css让超出文字省略号
    css3 背景透明

  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6790164.html
Copyright © 2020-2023  润新知