zoukankan      html  css  js  c++  java
  • 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)存储于最低内存地址处。

    查看全文

  • 相关阅读:
    Node入门
    Java try-catch、throw和throws的几点想法
    SpringMVC的四种HandlerMapping
    枚举
    MyBatis表和实体关联
    MyBatis xml和dao层接口组合使用
    Spring Task 定时器
    (转)Spring定时任务的几种实现
    Struts2+Spring发送邮件
    Struts2文件上传
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6790164.html
Copyright © 2011-2022 走看看