注:本文是听韦东山老师课程后的个人笔记,详细内容可以看韦东山老师的课程网站,这个部分课程是免费的。
一、引入网络编程的意义
1、多设备测试时,如果用串口通信,接线麻烦,不好管理
2、串口打印printf的调用,会拖慢程序运行的速度
3、去掉printf,才会发布成品,但是一些高速运行下的bug可能会因为iprintf拖慢程序运行速度,造成延时而被掩盖掉
综上所述,引入网络通信很有必要
二、什么时网络通信
网络通信本质上时数据传输,数据传输三要素:源、目的、长度
三、怎么写程序?
文件读写时:
fd = open("filename")
read(fd,buf,len)
write(fd,buf,len)
网络读写时:
需要确定两个元素:ip和端口
(一般80端口表示http服务,22端口表示ssh)
服务器端
socket无三要素
fd = socket(domain,type,protocol)
bind(自己的的ip、端口)(收的绑定收的,发的绑定发的)把fd和ip绑定起来
listen(启动监测数据)
accept(建立一条连接)
send(发数据,回应请求)
recv(接收数据)
客户端
fd = socked(domain,type,protocol)
connect(建立连接,指明目的地址)
send(发数据)
recv(接收数据)
============================================
udp:
服务端
fd = socket();
bind(ip,端口);
recvfrom
sendto
客户端
connect可用可不用,用connect,和send搭配,不用connect,直接用sendto,
其参数中有目的地址,而这一绑定缓解sendto自带,send却需要connect来绑定。
connect()//不是三次握手的连接
send(),sendto()
recv(),recvfrom()