流式套接字:SOCK_STREAM(TCP)
数据包套接字:SOCK_DGRAM(UDP)
原始套接字:SOCK_RAW(直接访问网络层协议)
int inet_aton(const char *strptr, struct in_addr *addrptr);
in_addr_t inet_addr(const char *strptr);
char *inet_ntoa(struct in_addr addr);
u_long htonl(u_long hostlong);
u_short htons(u_short hostshort);
u_long ntohl(u_long netlong);
u_short ntohs(u_short netshort);
int sock_fd socket(int domain, int type, int protocol);
domain: PF_INET(网络通信)
PF_UNIX(本地通信)
type:SOCK_STREAM,SOCK_DGRAM, SOCK_RAW
protocal:0,当type为SOCK_RAW是传入协议编号
int bind(int sock_fd, struct sockaddr *my_addr, int addrlen);
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
struct sockaddr_in{
u_short sin_family;//AF_INET
u_short sin_port;//端口号 htons(short);
struct in_addr sin_addr;//IPv4地址
char sin_zero[8];
}
myaddr.sin_addr.s_addr = inet_addr("192.168.1.100");
int listen(int sockfd, int backlog);
backlong:可接受的最大数目
int accept(int sockfd, struct sockaddr *addr(保存对方地址), socklen_t *addrlen(对方地址的长度,必须初始化));
若不需要对方地址,后两个NULL,
返回新的描述符
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
ssize_t send(int sockfd, const void *buff, size_t siez, int flags);
int flags:发送方式,默认阻塞,传0
ssize_t recv(int sockfd, const void *buff, size_t size, int flags);
int flags:0
int close(int sockfd);
int shutdown(int sockfd, int how);
how: 0关闭读通道
1关闭写
2:读写都关闭,相当于close
阅读(1223) | 评论(0) | 转发(0) |