linux网络编程基础API(一)

一下内容记录linux网络编程基础内容:

1、套接字地址结构

ipv4套接字地址结构:struct sockaddr_in,定义在<netinet/in.h>,

ipv6套接字地址结构:struct sockaddr_in6,同样定义在<netinet/in.h>

通用套接字地址结构:struct sockaddr,定义在<sys/socket.h>

ipv4和ipv6套接字地址分别用在定义他们时,而通用套接字用于套接字函数,需要强制类型转换。

新的通用套接字地址结构struct  sockaddr_storage还没用过,用到时再补充吧。

如上地址中的成员包括16为的端口号和32位的IPV4地址,而都需要使用网络字节序,以下为网络字节序和主机字节序的转换:

 <netinet/in.h>,h:host    n:network   s:short   l:long

uint16_t htons(uint16_t host16bitvalue)

uint32_t htonl(uint32_t host16bitvalue)

uint16_t ntohs(uint16_t host16bitvalue)

uint32_t ntohl(uint32_t host16bitvalue)

 

2、字节操纵函数

<strings.h> void bzero(void *dest, size_t nbytes),bzero把目标字符串中指定数目的字节置为0.

<string.h> void *memset(void *dest, int c, size_t len), memset把目标字符串中指定数目的字节置为c。


3、转换函数

 <apra/inet.h>,一下均用于ipv4

int inet_aton(const char *strptr, struct in_addr *addrptr),将strptr所指的C字符串转换成一个32位的网络字节序二进制值,存放在addrptr。

in_addr_t inet_addr(const char *strptr),同上,返回该32位值。已被弃用。

char *inet_ntoa(struct in_addr inaddr),将一个32位的网络字节序二进制ipv4地址转换成相应的点分十进制数串。

<arpa/inet.h>, 适用于ipv4和ipv6

int inet_pton(int family, const char *strptr, void *addrptr),family指定是AF_INET | AF_INET6,从表达式格式strptr转化为数值格式addrptr。

const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len),family同上,len为目标存储大小,从数值addrptr转化为表达式格式strptr。


4、基本TCP套接字函数

<sys/socket.h>

int socket(int family, int type, int protocal)

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

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

int listen(int sockfd, int backlog)

int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)

int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen),返回socket关联的本地协议地址。

int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *addrlen),返回socket关联的外地协议地址。

<unistd.h>

int read(int handle, void *buf, int nbyte)

int write(int handle, void *buf, int nbyte)

int close(int sockfd)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值