Python高级——网络编程_03_UDP
网络编程
ip地址:计算机网络中的计算机标识<身份>
ipv4 4字节/ipv6 8字节
Linux:ifconfig查看网卡信息
windows:ipconfig查看网卡信息
ping 目标ip/域名
127.0.0.1 本地环回测试
端口
标识一台计算机中一个应用程序<服务>
操作系统分配给网络应用程序的编号
端口号:
标识端口的一个编号 0-65535
网络编程中,一般IP地址和端口都是组合使用
知名端口
0-1023
22 SSH服务
21 FTP服务
80 HTTP服务
动态端口
1024-65535
查看端口:
netstat -an | grep ":端口"
lsof -i [tcp/udp]:8080 列出端口对应的程序
UDP:用户数据报协议
特点:无连接,资源小,速度快,数据包最大是64K
优点:速度快,占用资源小,无需连接
缺点:传输数据不可靠,易丢包 没有流量控制,发送端一直发送,接受方需要及时接收,否则容易出现卡死状况
使用场景:
QQ、微信的音视频传输
上课使用的公屏软件
发送广播消息
socket(套接字)
功能:实现不同计算机中服务之间的进程通信的工具
格式:socket.socket(socket.参数一,socket.参数二)
参数一:AF_INET:ipv4类型 AF_INET6:ipv6类型
参数二:SOCK_DGRAM:(UDP协议) SOCK_STREAM(TCP协议)
绑定端口 brind
功能:设置固定端口,IP地址填写空格代表本机的任意IP
格式:
local_addr = ("",7788)
通过套接字.bind(local_addr)
发送数据 sendto(数据,(ip,端口))
接收数据 recvfrom(1024) 1024 : 接收数据最大值 ,返回值:数据,(ip,端口)
编码数据 encode() 解码 decode()
作用:因数据传输,全部转换为二进制 byte类型
参数一:编码格式:utf-8/gbk
utf-8 汉字为3个字节 gbk汉字为2个字节
参数二:errors取值:如果取值strict 代表严格模式,出错抛出异常 ignore代表宽松,忽略异常
注:Linux和mac中默认传输都是utf-8,但windows获取为utf-8,发送为gbk
广播:
作用:设置socket的选项,允许发送广播消息
格式:udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True)
注:并且IP设置为广播网段255
关闭套接字 close()
思考:以上的程序如果选择了接收数据功能,并且此时没有数据,程序会堵塞等待,如何才能让这个程序收发数据一起进行?
当没有数据返回时,
返回为:b""
可以通过判断,进行确定数据传输是否结束和连接关闭