分类: LINUX
2011-07-26 15:41:45
l 头文件
n
n
n
l 地址结构
n struct sockaddr结构,由于类型兼容性,可以使用struct sockaddr_in来代替
n struct sockaddr_in的定义
struct sockaddr_in
{
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
}
n struct in_addr的定义
struct in_addr
{
unsigned long s_addr;
}
n test
l 服务器端函数
n int socket(int domain, int type, int protocol)
domain取值一般为AF_INET,type的取值有SOCK_STREAM,SOCK_DGRAM,SOCK_RAW,protocol的取值一般为0。函数失败返回值为-1。
n int bind(int sockfd, struct sockaddr *addr, int addrlen)
n int listen(int sockfd, int backlog)
n int accept(int sockfd, stuct sockaddr *addr, int &len)
n int send(int sockfd, const void *msg, int len, int flags)
flags一般取值为0。
n int recv(int sockfd, void *buf, int len, int flags)
flags一般取值为0。
l 客户端函数
n int socket(int domain, int type, int protocol)
domain取值一般为AF_INET,type的取值有SOCK_STREAM,SOCK_DGRAM,SOCK_RAW,protocol的取值一般为0。函数失败返回值为-1。
n int connect(int sockfd, struct sockaddr *addr, int len)
l 网络和主机字节转换函数
n htons():主机字节转换为网络字节顺序 短整型
n htonl():主机字节转换为网络字节顺序 长整型
n ntohs():网络字节转换为主机字节顺序 短整型
n ntohl():网络字节转换为主机字节顺序 长整型
l IP地址转换
n 将点分十进制表示的IP地址转换为整形: inet_addr(),如inet_addr(“192.168.0.1”)
n 将点分十进制表示的IP地址转换为struct in_addr
int inet_aton(const char *IP, stuct in_addr *addr)
n 将struct in_addr的变量转换为点分十进制的IP地址
char *inet_ntoa(struct in_addr addr)
n test
l 基于UDP的数据发送和接收
n sendto函数
int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int len )
n recvfrom函数
int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen)
n Test
l close和shutdown函数
n close
close(int sockfd)
n shutdown
int shutdown(int sockfd, int how):how可以取得值:0表示以后不允许数据接收;1表示不允许发数据;2表示两者都不行。