还是写点吧,毕竟这玩意琢磨半天也看不明白,边学边记边理解。反正我觉得写下来,若干年以后看看自己当初的样子,而且我定义为笔记,多写写。以后哪些理解错了也能改。
一开始看,头疼,首先浮躁的拿起源码抄一遍,结果udp.h都不知道怎么解决,自己当时不懂.h头文件,以为声明个函数就好了。很多时候防止重复定义,都会有#ifudef之类的,但是我没写,因为不懂啊。
好了,先把第一章看看。
回顾一下4层TCP/IP网络层
套接字构造
struct sockaddr{
unsigned short sa_family;
char sa_data[14];
}
struct sockaddr_in{
unsigned short sin_familty;
unsigned short int sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
}
struct in_addr{
unsigned long s_addr;
}
ex:
struct sockaddr_in sock;
sock.famil=AF_INET;
sock.sin_port=hton(80);
sock.sin_addr.s_addr=inet_addr("127.0.0.1");
memset(sock.sin_zero,0,sizeof(sock.sin_zero));
create:
int socket(int domain,int type,int protocol)
domain AF_INET IPv4
type SOCK_STREAM tcp
SOCK_DGRAM udp
protocol 0
int connect(int sockfd,const struct sockaddr *serv_addr,socklen_t addrlen)
int bind(int sockfd,struct sockaddr *my_addr,socklen_t addrlen)
int listen(int s,int backlog)
int accept(int s,struct sockaddr *addr,socklen_t *addrlen)
ssize_t send(int s,const void *msg,size_t len,int flags);
ssize_t recv(int s,void *buf,size_t len,int flags);