您的位置:首页 > 理论基础 > 计算机网络

网络编程函数

2014-05-13 15:13 169 查看
#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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: