2017年1月20日 课堂笔记
来源:互联网 发布:周杰伦 红模仿知乎 编辑:程序博客网 时间:2024/06/07 09:48
2017年1月22日 19:02:15
十大问题:
(1)四层网络模型与七层网络模型
(2)五类IP的分类
(3)IP,端口号,网关,DNS,路由,VPN的含义及作用
(4)TCP与UDP的区别
(5)三次握手与四次挥手的详细过程
(6)什么时候使用TCP协议,什么时候使用UDP协议?
(7)C/S架构和B/S架构的优缺点
(8)TCP的数据报头组成
(9)UDP数据爆头的组成
(10)如何使用UDP实现可靠传输
网络的问题非常重要,《计算机网络》好好看
下面写网络的API
(1)int socket(in family,int type, int protocol);
头文件:#include <sys/types.h>
#include <sys/socket.h>
形参:①family:遵循的通讯协议,宏:AF_INET 为IPV4(通常写这个),AF_INET6 为IPV6
②type:设置通信的协议类型,TCP协议:SOCK_STREAM,DUP协议:SOCK_DGRAM
③protocol:用来指定socket所使用的传输协议编号,一般置0
返回值:成功则返回一个套接字,失败返回-1,网络的API失败好像都返回-1
(2)捆绑
int bind(int socket,const strust sockaddr *myaddr, socklen_t addrlen);
结构体:struct sockaddr
{
u_short sa_family; 填AF_INET时,遵循IPV4
char sa_data[14]; 14字节的特定协议地址
}
现在一帮用其升级版struct sockaddr_in
{
short int sin_family; 遵循的协议
unsigned short int sin_port; 端口号 //不要用网络端口80
struct in_addr sin_addr; 32位地址 struct in_addr { unsigned long s_addr};
unsigned char sin_zero[8]; 填0
}
bind函数的作用:将stocket套接字和myaddr等信息捆绑在一起
在使用时,要注意:
(1)要对addr_in进行初始化:
①bzero(&servaddr,sizeof(servaddr)); 清零函数,在头文件:#include <strings.h>中
②servaddr.sin_family = AF_INET;
③servaddr.sin_addr.s_addr = htonl(INADDR_ANY); //该宏,使本机所以地址都能访问到本机
inet_addr(argv[1]); 函数inet_addr将字符串转换成需要的IP字符串
④serraddr.sin_port = htons(SERV_PORT); //自定义的宏,不要写80
(2)注意使用struct sockaddr_in时,传参要强制类型转换成struct sockaddr
返回值:成功返回0,失败返回-1
(3)设置监听器
int listen(int socket, int backlog);
套接字 监听器个数
返回值:成功返回0,失败返回-1
(4)int accept(int socket, struct sockaddr *cliaddr, socklen_t *addrlen);
套接字 传出参数,返回客户端的地址和端口号(具体信息,都用这个结构体接,用sockaddr_in时候要强制类型转换)
最后一个参数为接收结构体的长度
当不需要使用客户端信息时,可以置空
返回值:失败返回-1,成功返回一个连接表叔父,对该描述符进行读写,相当于,对客户端做接收与发送
(5)int connect(int socket, struct sockaddr *cliaddr, socklen_t *addrlen);
套接字 服务器信息 类型的程度
connect 和bind的形参一致,区别在与bind的参数为自己的,connect为要通信的单位
(6)发送,接收,可以使用write,send和read,recv函数,文件的函数参考之前的笔记
0 0
- 2017年1月20日 课堂笔记
- 2017年1月15日 课堂笔记
- 2017年1月16日 课堂笔记
- 2017年1月17日 课堂笔记
- 2017年1月18日 课堂笔记
- 2017年10月9日数据结构课堂笔记
- 2015年12月28日课堂笔记与作业
- 2016年11月2日 课堂笔记
- 2016年11月4日 课堂笔记
- 2016年11月5日 课堂笔记
- 2016年11月11日 课堂笔记
- 2016年11月16日 课堂笔记
- 2016年12月5日 课堂笔记
- 2016年12月7日 课堂笔记
- 2016年12月9日 课堂笔记
- 2016年12月16日 && 2016年12月18日 课堂笔记
- 11月18日 & 11月19日课堂笔记
- 11月21日 && 11月25日 课堂笔记
- 大明A+B
- 2017年新春报喜!热烈祝贺王家林老师大数据经典著作《SPARK内核机制解析及性能调优》 畅销书籍 出版上市!
- 算法复习------求数组的最大子序列
- p1057 数的计算
- Scapy Sniffer的用法
- 2017年1月20日 课堂笔记
- 哈理工 hrbust 1019
- HDU 1000【A+B Problem】
- 292. Nim Game
- 5-5 堆中的路径 (25分)
- mac终端使用ftp总结
- 蓝桥杯-基础练习 回文数
- 实现ViewPager中的Fragment无感知动态替换
- hibernate HQL