本章节使用socket套接字利用udp在python环境下实现简单的半双工通信,udp全双工会在后面多任务章节讲到。
import socket #导入socket模块 def recv(udp_socket): # 在recvfrom这里形成阻塞,参数为最大接收容量 # message 返回值为两个参数的元组(返回内容,(ip,port)) message = udp_socket.recvfrom(1024) # 对返回元组中内容以‘utf-8’的编码方式进行解码 print(message[0].decode('utf-8')) def send(udp_socket): temp = input('请输入发送内容') udp_socket.sendto(temp.encode('utf-8'),(‘目标地址’,目标端口号)) def main(): # 创建udp socket的套接字 # socket.AF_INET -> 对应ipv4命名规则;socket.SOCK_DGRAM -> 对应使用udp套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 定义本地ip地址以及端口号(ip地址以及端口号会在后面讲到);''表示默认为本地ip地址 address = ('', 8880) # 绑定套接字(注意bind()里面参数的数据类型应为元组) udp_socket.bind(address) while True: print(''' 1:发送消息 2:接收消息 3:退出''') command = input('请输入操作命令:') if command == '1': send(udp_socket)
elif command == '2': recv(udp_socket) elif command == '3': break # 关闭socket套接字 udp_socket.close() if __name__ == '__main__': main()