网络编程函数

#include<netinet/in.h>

uint16_t htons(uint16_t host16bitvalue);

uint32_t htonl(uint32_t host32bitvalue); 均返回:网络字节序值


uint16_t ntohs(uint16_t net16bitvalue);

uint32_t nohl(uint32_t net32bitvalue); 均返回:主机字节序值

字节操纵函数

#include<string.h>

void bzero(void * dest,size_t nbytes);

void bcopy(const void * src,void *dest,size_t nbytes);

int bcmp(const void * ptr1,const void *ptr2,size_t nbytes);  返回:0-相等,非0-不相等

ANSI C函数:

#include<string.h>

void * memset(void * dest,int c,size_t len);

void * memcpy(void *dest,const void *src,size_t nbytes);

int memcmp(const void *ptr1,const void *ptr2,size_t nbytes); 返回:0-相同,>0或<0-不相同


ASCII与网络字节序的二进制值(此值存在于套接口地址结构中)间转换地址:

1.inet_aton、inet_addr和inet_ntoa在点分十进制数串与它的32位网络字节序二进制值间转换IPV4地址,

2.inet_pton,inet_ntop对IPV4和IPV6地址都能处理,

#include<arpa/inet.h>

int inet_aton(const char * strptr,struct in_addr *addrptr); 返回1-串有效,0-串有错

in_addr_t inet_addr(const char * strptr);

         返回:若成功,返回32为二进制的网络字节序地址,若有错,则返回INADDR_NONE

char * inet_ntoa(struct in_addr inaddr);

        返回:指向点分十进制数串的指针

inet_pton和inet_ntop对IPV4和IPV6地址都能处理,字母p和n分别代表presentation和numeric。地址的表达(presentation)格式通常是ASCII串。数值(numeric)格式则是存在于套接口地址结构中的二进制。

#include<arpa/inet.h>

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

        返回:1-成功,0-输入不是有效的表达式,-1-错误

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

           返回:指向结果的指针-成功,NULL-出错

测试是否为套接口描述字:

#include<sys/stat.h>

int isfdtype(int fd,int fdtype); 返回:1-是指定类型,0-不是指定类型,-1-出错


#include<sys/socket.h>

int socket(int family,int type,int protocol);返回:非负描述字-成功,-1-出错

int connect(int sockfd,const struct sockaddr *servaddr,socklen_t addrlen); 返回:0-成功,-1-出错

int bind(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen); 返回:0-成功,-1-出错

int listen(int sockfd,int backlog); 返回:0-成功,-1-出错

int accept(int sockfd,struct sockaddr *cliaddr,socklen_t * addrlen); 返回:非负描述字-0k,-1-出错

并发服务器:

#include<unistd.h>

pid_t fork(void); 返回:在子进程中为0,在父进程中位子进程ID,-1-出错

int execl(const char *pathname,const char *arg0,...);

int execv(const char *pathname,char *const argv[]);

int execle(const char *pathname,const char *argv0,...);

int execve(const char *pathname,char *const argv[],char *const envp[]);

int execlp(const char *filename,const char *arg0,...);

int execvp(const char *filename,char *const argv[]);

int close(int sockfd);


与套接口关联的本地协议地址(getsockname),或返回与套接口关联的远程协议地址(getpeername)

#include<sys/socket.h>

int getsockname(int sockfd,struct sockaddr* localaddr,socklen_t *addrlen);

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




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值