本章节使用 socket 套接字利用 udp 在 python 环境下实现简单的半双工通信, udp 全双工会在后面多任务章节讲到.
- import socket #导入 socket 模块
- def recv():
- # 在 recvfrom 这里形成阻塞, 参数为最大接收容量
- # message 返回值为两个参数的元组(返回内容,(ip,port))
- message = udp_socket.recvfrom(1024)
- # 对返回元组中内容以'utf-8'的编码方式进行解码
- print(message[0].decode('utf-8'))
- def send():
- temp = input('请输入发送内容')
- udp_socket.sendto(temp.encode('utf-8'),('目标地址', 目标端口号))
- def main():
- # 创建 udp socket 的套接字
- # socket.AF_INET -> 对应 ivp4 命名规则; 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()
- elif command == '2':
- recv()
- elif command == '3':
- break
- # 关闭 socket 套接字
- udp_socket.close()
- if __name__ == '__main__':
- main()
来源: http://www.bubuko.com/infodetail-2851001.html