结构定义头文件 | #include <netinet/in.h> |
sa_family | AF_INET:IPv4协议 |
AF_INET6:IPv6协议 | |
AF_LOCAL:UNIX域协议 | |
AF_LINK:链路地址协议 | |
AF_KEY:密钥套接字(socket) |
所需头文件 | #include <netinet/in.h> |
函数原型 | uint16_t htons(unit16_t host16bit) uint32_t htonl(unit32_t host32bit) uint16_t ntohs(unit16_t net16bit) uint32_t ntohs(unit32_t net32bit) |
函数传入值 | host16bit:主机字节序的16位数据 |
| host32bit:主机字节序的32位数据 |
net16bit:网络字节序的16位数据 | |
net32bit:网络字节序的32位数据 | |
函数返回值 | 成功:返回要转换的字节序 |
出错:-1 |
| 调用该函数只是使其得到相应的字节序,用户不需清楚该系统的主机字节序和网络字节序是否真正相等。如果是相同不需要转换的话,该系统的这些函数会定义成空宏。 |
所需头文件 | #include <arpa/inet.h> | |
函数原型 | int inet_pton(int family, const char *strptr, void *addrptr) | |
函数传入值 | family | AF_INET:IPv4协议 |
AF_INET6:IPv6协议 | ||
strptr:要转化的值 | ||
addrptr:转化后的地址 | ||
函数返回值 | 成功:0 | |
出错:-1 |
所需头文件 | #include <arpa/inet.h> | |
函数原型 | int inet_ntop(int family, void *addrptr, char *strptr, size_t len) | |
函数传入值 | family | AF_INET:IPv4协议 |
AF_INET6:IPv6协议 | ||
函数传入值 | addrptr:转化后的地址 | |
strptr:要转化的值 | ||
len:转化后值的大小 | ||
函数返回值 | 成功:0 | |
出错:-1 |
所需头文件 | #include <netdb.h> |
函数原型 | struct hostent *gethostbyname(const char *hostname) |
函数传入值 | hostname:主机名 |
函数返回值 | 成功:hostent类型指针 |
出错:-1 |
所需头文件 | #include <netdb.h> |
函数原型 | int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **result) |
函数传入值 | node:网络地址或者网络主机名 |
service:服务名或十进制的端口号字符串 | |
hints:服务线索 | |
result:返回结果 | |
函数返回值 | 成功:0 |
出错:-1 |
结构体头文件 | #include <netdb.h> | |
ai_flags | AI_PASSIVE:该套接口是用作被动地打开 | |
AI_CANONNAME:通知getaddrinfo函数返回主机的名字 | ||
ai_family | AF_INET:IPv4协议 | |
AF_INET6:IPv6协议 | ||
AF_UNSPEC:IPv4或IPv6均可 | ||
ai_socktype | SOCK_STREAM:字节流套接字socket(TCP) | |
| SOCK_DGRAM:数据报套接字socket(UDP) | |
ai_protocol | IPPROTO_IP:IP协议 | |
IPPROTO_IPV4:IPv4协议 | 4 | IPv4 |
IPPROTO_IPV6:IPv6协议 | ||
IPPROTO_UDP:UDP | ||
IPPROTO_TCP:TCP |
所需头文件 | #include <sys/socket.h> | |
函数原型 | int socket(int family, int type, int protocol) | |
函数传入值 | family: 协议族 | AF_INET:IPv4协议 |
AF_INET6:IPv6协议 | ||
AF_LOCAL:UNIX域协议 | ||
AF_ROUTE:路由套接字(socket) | ||
AF_KEY:密钥套接字(socket) | ||
type: 套接字类型 | SOCK_STREAM:字节流套接字socket | |
SOCK_DGRAM:数据报套接字socket | ||
SOCK_RAW:原始套接字socket | ||
protoco:0(原始套接字除外) | ||
函数返回值 | 成功:非负套接字描述符 | |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int bind(int sockfd, struct sockaddr *my_addr, int addrlen) |
函数传入值 | socktd:套接字描述符 |
my_addr:本地地址 | |
addrlen:地址长度 | |
函数返回值 | 成功:0 |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int listen(int sockfd, int backlog) |
函数传入值 | socktd:套接字描述符 |
backlog:请求队列中允许的最大请求数,大多数系统缺省值为5 | |
函数返回值 | 成功:0 |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) |
函数传入值 | socktd:套接字描述符 |
addr:客户端地址 | |
addrlen:地址长度 | |
函数返回值 | 成功:0 |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int connect(int sockfd, struct sockaddr *serv_addr, int addrlen) |
函数传入值 | socktd:套接字描述符 |
serv_addr:服务器端地址 | |
addrlen:地址长度 | |
函数返回值 | 成功:0 |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int send(int sockfd, const void *msg, int len, int flags) |
函数传入值 | socktd:套接字描述符 |
msg:指向要发送数据的指针 | |
len:数据长度 | |
flags:一般为0 | |
函数返回值 | 成功:发送的字节数 |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int recv(int sockfd, void *buf,int len, unsigned int flags) |
函数传入值 | socktd:套接字描述符 |
buf:存放接收数据的缓冲区 | |
len:数据长度 | |
flags:一般为0 | |
函数返回值 | 成功:接收的字节数 |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int sendto(int sockfd, const void *msg,int len, unsigned int flags, const struct sockaddr *to, int tolen) |
函数传入值 | socktd:套接字描述符 |
msg:指向要发送数据的指针 | |
len:数据长度 | |
flags:一般为0 | |
to:目地机的IP地址和端口号信息 | |
tolen:地址长度 | |
函数返回值 | 成功:发送的字节数 |
出错:-1 |
所需头文件 | #include <sys/socket.h> |
函数原型 | int recvfrom(int sockfd,void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen) |
函数传入值 | socktd:套接字描述符 |
buf:存放接收数据的缓冲区 | |
len:数据长度 | |
flags:一般为0 | |
from:源主机的IP地址和端口号信息 | |
tolen:地址长度 | |
函数返回值 | 成功:接收的字节数 |
出错:-1 |
欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |