tinyhttpd学习笔记(二)socket相关知识

   tinyhttpd学习笔记(一)编译错误及运行结果:http://blog.csdn.net/gqb1226/article/details/46844887

  该篇博客开始分析相关代码.

  一,结构体 sockaddr_in

         该结构体的定义在netinet/in.h中定义

      struct sockaddr_in {
             short int sin_family;                      /* Address family */
             unsigned short int sin_port;       /* Port number */
             struct in_addr sin_addr;              /* Internet address */
             unsigned char sin_zero[8];         /* Same size as struct sockaddr */
      };

  其中sin_family指的是协议族,在socket中常见的是AF_NET,即是使用IP

    sin_port指的是端口号.

    sin_addr是一个in_addr的结构体,该结构体可以理解为32的ip地址. 

     typedef uint32_t in_addr_t;
     struct in_addr
     {
      in_addr_t s_addr;
     };
             s_addr是按照网络字节序存储IP地址.

   sin_zero是为了保持sockaddr和sockaddr_in两个数据结构大小一致而保留的空字节.

 二,socket函数

   在startup函数完成初始化 httpd 服务,包括建立套接字,绑定端口,进行监听等.其中有   

      httpd = socket(PF_INET, SOCK_STREAM,0);
            socket()函数的原型是:
   int socket(int domain, int type, int protocol);
     该三个参数的含义是:
   domain:表示通信域,如PF_UNIX(unix域),PF_INET(IPv4),PF_INET6(IPv6)等

   type:表示通信类型,最常用的如SOCK_STREAM(面向连接可靠方式,  比如(TCP)、SOCK_DGRAM(非面向连接的非可靠方式,比如(UDP)等。  SOCK_STREAM 是数据流,一般是tcp/ip协议的编程,SOCK_DGRAM分是数据抱,是udp协议网络编程。

   protocol:表示需要使用的协议,常用的协议有IPPROTO_TCPIPPTOTO_UDPIPPROTO_SCTPIPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议,使用0则根据前两个参数使用默认的协议。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值