關於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,可以自行開啓一個接收一個發送進行測試!