udp从目标主机接收数据实现流程:
1. udp网络程序-发送数据编程实现
1. udp网络程序-发送数据编程实现
udp发送数据实现流程:
1. 创建一个udp 的socket对象
2. 通过udp发送消息
udp.sendto()
3. 关闭udp 对象
udp.close()
2.udp网络程序-接收数据实现
1. 创建一个udp 的socket对象
2. 通过udp发送消息
udp.sendto()
3. 从目标主机接收数据
udp.recvfrom()
3. 关闭udp 对象
udp.close()
具体代码:
import socket
def main():
#. 创建一个udp 的socket对象
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
"""
#通过udp的socket对象发送数据
sendto(data[,filgs],address)
data:要发送的数据
address 目标主机的地址,这里发送的是一个元祖类型,第一个元素是:ip地址,
第二个元素是端口号
#准备要发送给目标主机的数据
send_data = input("请输入要发送的数据:")
#准备目标主机的地址
dest_addr = ('192.168.78.21',8080) #元祖类型
#将字符串编码,把字符串转换成字节串
data = send_data.encode('utf-8')
#发送数据到目标主机
udp_socket.sendto(data,dest_addr)
#从目标主机接收数据 阻塞状态
recv_data = udp_socket.recvfrom(1024)
#显示接收到的消息
#它回传的也是一个元祖类型,第一个元素是回传的消息,第二个是回传主机的ip和端口
recv_info = recv_data[0].decode('gbk')
recv_addr = str(recv_data[1])
print("接收到的消息:%s,消息来自<<<%s"%(recv_info,recv_addr))
#关闭socket对象
udp_socket.close()
if __name__ == '__main__':
main()
udp的注意点:
1.recvfrom它回传的也是一个元祖类型,第一个元素是回传的消息,第二个是回传主机的ip和端口
2.发送目标主机的地址时也是一个元祖类型的发送,包括ip地址及端口号