udp接收数据实例
import socket
def main():
# 1.创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGEAM)
# 2.绑定一个本地端口
udp_socket.bind(('', 8899)) # ip为空, 默认表示本机
# 3.接收数据, 要设置最大值
recv_data = udp_socket.recvform(1024) # 设置最大字节
rect_msg = recv_data[0] # 获取数据内容, 数据格式往下参考
# 4.使用数据
print(rect_msg.decode("utf-8")) # 对于中文需要解码
$ 5.关闭套接字
udp_socket.close()
if __name__=="__main__":
main()
运行此程序, 会自动等待接收数据, 收到数据后会自动结束, 收到的数据格式如下
(b'字符串', ('ip地址', 端口))
如果要循环接收数据, 要设置一个循环, 不断接收
此外, 对于中文数据, 需要在发送时进行编码, 如utf-8编码, 然后在接收时解码
- utf-8, 互联网上常用的编码
- gbk, 这是windows平台对中文的默认编码
ps: 绑定ip时, 一般为空, 默认就是指本机, 可以手动输入, 但必须是本机ip, 绑定端口时不能与已分配的端口冲突, 已分配端口无法被抢占