socket编程常用函数总结

来源:互联网 发布:js cookie设置 编辑:程序博客网 时间:2024/05/17 08:26

数据类型

<sys/types.h>

int8_t

带符号8位整数

uint8_t

无符号8位整数

 

<sys/socket.h>

sa_family_t

套接口地址结构的地址族

socklen_t

长度,一般为uint32_t

 

<netinet/in.h>

in_addr_t

ipv4地址,一般32

in_port_t

tcp/udp端口,一般16

 

结构

<netinet/in.h>

struct in_addr{

    in_addr_t   s_addr;

}

 

struct sockaddr_in{

    uint8_t         sin_len;

    sa_family_t     sin_family; //AF_INET  

    in_port_t       sin_port;

    struct in_addr  sin_addr;

    char            sin_zero[8];

}

 

struct in6_addr{

    unit8_t         s6_addr[16];

};

struct sockaddr_in6{

    uint8_t         sin6_len;

    sa_family_t     sin6_family;    //AF_INET6

    in_port_t       sin6_port;

    uint32_t        sin6_flowinfo;

    struct in6__addr sin6_addr;

};

通用套接口地址结构

<sys/socket.h>

struct sockaddr{

    uint8_t         sa_len;

    sa_family_t     sa_family;

    char            sa_data[14];

}


字节排序函数

<netinet/in.h>

uint16_t htons(uint16_t host16bitvalue);

uint32_t htonl(uint32_t host32bitvlaue);

    返回网络字节序

uint16_t ntohs(uint16_t net16bitvalue);

uint32_t ntohl(uint32_t net32bitvalue);

    返回主机字节序

 

地址转换函数

<arpa/inet.h>

int inet_aton(const char* strptr, struct in_addr * addrptr)

1对,0

in_addr_t inet_addr(const char* strptr)

INADDR_NONE

char* inet_ntoa(struct in_addr inaddr)

 

 

新的地址转换

<arpa/inet.h>

int inet_pton(int family, const char* strptr, void* addrptr)

const char * inet_ntop(int family, const void * addrptr, char *strptr, size_t len)

 

测试描述符函数

<sys/stat.h>

int isfdtype(int fd, int fdtype)

 

socket函数

<sys/socket.h> <sys/types.h>

int socketint family, int type, int protocol

int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen)

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)

int listen(int sockfd, int backlog)

int accept(int new_sockfd, struct sockaddr *addr, socklen_t *addrlen)

int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *namelen)

int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *addrlen)

 

原创粉丝点击