首页 理论教育IPv6SocketAPI函数应用

IPv6SocketAPI函数应用

【摘要】:源自美国加利福尼亚大学Berkeley分校BSD UNIX系统的Socket API(套接字)是TCP/IP网络环境下进行通信的重要工具。应用程序在网络上传输,发送和接收的信息都通过这个Socket接口来实现。IPv6的Socket API函数中一部分沿用了IPv4的Socket API函数,也新增了一些IPv6专用的Socket API函数,这些Socket API函数如表4.3所示。表4.3IPv6的Socket API函数Getaddrinfo()的函数原形为:int getaddrinfo。listen()函数的函数原型为:int listen;其中,sockfd是socket函数返回的socket描述符;backlog指定在请求队列中允许的最大请求数。

源自美国加利福尼亚大学Berkeley分校BSD UNIX系统的Socket API(套接字)是TCP/IP网络环境下进行通信的重要工具。Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,发送和接收的信息都通过这个Socket接口来实现。

IPv6的Socket API函数中一部分沿用了IPv4的Socket API函数,也新增了一些IPv6专用的Socket API函数,这些Socket API函数如表4.3所示。

表4.3 IPv6的Socket API函数

Getaddrinfo()的函数原形为:int getaddrinfo(const char*hostname,const,char*service,const struct addrinfo*hints,structaddrinfo**res)。

其中,hostname可以是主机名地址或者是IPv6的地址;service可以是服务名或十进制端口号,在编程时提供很大的方便;Hints相当于一个过滤器,只有符合Hints结构的内容才会返回到res指针中。

socket()函数原形为:int socket(int domain,int type,int protocol);

其中第一个参数确定协议族,如符号常数AS_NS表示用Xerox网络服务地址族,符号常数AF_IN ET 6表示用IPv6协议;第二个参数指明了使用的通信服务类型,如符号常数SOCK_DGRAM表示数据报,用SOCK_STREAM表示字节流;第三个参数指明此Socket请求使用的协议,如符号常数IPPRO TO_TCP表示用TCP协议,用IPPRO TO_UDP表示用UDP协议。

listen()函数的函数原型为:int listen(int sockfd,int backlog);

其中,sockfd是socket函数返回的socket描述符;backlog指定在请求队列中允许的最大请求数。(www.chuimin.cn)

accept()函数的函数原型为:int accept(int sockfd,void*addr,int*addrlen);

其中,sockfd是被监听的socket描述符;addr通常是一个指向sockaddr-in变量的指针,该变量用来存放提出连接请求服务的主机的信息;addrten通常为一个指向值为sizeof(st ruct sockaddr in)的整型指针变量。

connect()函数原型为:int connect(in t sockfd,struct sockaddr*serv_addr,int addrlen);

其中,sockfd是socket函数返回的socket描述符;serv_addr是包含远端主机IP地址和端口号的指针;addrlen是远端地址结构的长度

send()函数原型为:int send(int sockfd,const void*msg,int len,int f lags);

其中,sockfd是用来传输数据的socket描述符;msg是一个指向要发送数据的指针;len是以字节为单位的数据的长度;flags一般情况下置为0。

recv()函数原型为:int recv(int sockfd,void*buf,int len,unsigned int f lags);

其中,sockfd是接受数据的socket描述符;buf是存放接收数据的缓冲区;len是缓冲的长度;flags也被置为0。