前言socket:
socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,socket 属于 全双工。
关于创建套接字的参数说明:
socket.socket(AddressFamily, Type)
Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)
网络 udp 概述:
udp 是 User datagram protocol 的简称, 中文名是用户数据报协议, 一种无连接的传输层协议, 提供面向事务的简单不可靠信息传送服务. 类似于日常生活中写信的场景, 不需要建立链接, 不关心发送结果
网络 udp 通信实现步骤:
# 创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定本地信息(发送数据时不需要绑定)
udp_socket.bind('', 8090) # ip地址不写, 默认本机的 IP 地址
# 发送数据
socket.sendto('数据内容'.encode('utf-8'), ('对方的ip', 8090))
# 接收数据
recv_data = socket.recvfrom(1024) # 返回元组信息含数据和发送方的ip以及端口
# 关闭套接字
udp_socke.close()
附:
encode() 和 decode() 函数的用法:
str.encode('utf-8') 把字符串 str 编码成字节码(bytes), utf-8代表国际码, gbk代表汉字码
bytes.decode('utf-8') 把字节码解码成字符串