关于UDP协议,实际是不怎么用的,总归是个知识点!
每台计算机都有自己的本地消息循环网卡,地址统一为127.0.0.1,利用这个在下方实现局域网内部消息收发的时候,将发送方IP修改为自己的IP或者是127.0.0.1,即可实现本地接收!
下方是代码!
注意:没有加入多线程,因此程序必须遵守一次性收发!可自行更改!
from socket import *
def recv_message(udp_socket):
"""消息接收函数"""
msg, opposite_addr = udp_socket.recvfrom(1024)
print(msg.decode("utf-8")) # 解码打印
print("%s:%d" % (opposite_addr[0], opposite_addr[1])) # 多此一举,既然定义了就用了
def send_message(udp_socket):
"""消息发送函数"""
# 键盘获取内容转为GBK格式,UTF-8在windows此处不适用
udp_socket.sendto(input("Send Content:").encode("gbk"), ("192.168.31.190", 8080))
def main_page():
"""功能选择页面"""
print("Option Function:")
print("1.Send Message")
print("2.Receive Message")
print("0.EXIT")
def main():
udp_socket = socket(AF_INET, SOCK_DGRAM) # 创建套接字
udp_socket.bind(("", 8088)) # 绑定IP与端口
# 循环页面
while True:
main_page()
opt = int(input("Option:"))
if opt == 1:
send_message(udp_socket)
elif opt == 2:
recv_message(udp_socket)
elif opt == 0:
break
else:
print("Input Error!")
# 关闭套接字
udp_socket.close()
if __name__ == '__main__':
main()
实验图:
需要注意的是网络调试助手有的不支持127.0.0.1,程序接收不到,这是助手的bug,可以自行开启一个接收一个发送进行测试!