UNP 套接字编程简介

 

在<netinet/in.h>中声明了IPV4的地址结构

struct in_addr{
    in_addr_t s_addr;  //32bit
};

struct sockaddr_in{
    uint8_t     sin_len; 
    sa_family_t     sa_family;
    in_port_t     sin_port;
    struct in_addr     sin_addr;
    char         sin_zero[8];
};

结构总大小至少 16 字节

sockeaddr_in serv;

serv.sin_addr   引用  in_addr  结构

serv.sin_addr.s_addr    引用 in_addr_t (通常是无符号32bit)

二者均引用同一个32位IPv4地址

 

通用套接口地址结构
套接口地址结构总是通过指针来传递,那么这个指针的数据类型就是通用套接口类型

<sys/socket.h>

struct sockaddr{
    uint8_t        sa_len;
    sa_family_t    sa_family;
    char         sa_data[14];
};

 

网络字节与主机字节转换用

htons(l), ntohs(l)   系列函数

 

表达形式与二进制数据用

inet_pton   inet_ntop    函数

 

 

read、write 等系统调用可能因缓冲区满而出现返回字节与期望不同,

返回errno 错误   ==   EINTR   需要重新调用...

 

posted @ 2012-10-15 23:00  khalil  阅读(98)  评论(0编辑  收藏  举报