前言:由於在專案中需要使用udp進行通訊,經過學習查詢資料實現了在同一臺電腦上自發自收功能,現在分享**如下,如有問題,歡迎指正。此**亦可以延伸其他功能。
執行系統:ubuntu18.04
執行環境:python3.6.9
1、自動獲取本地ip位址
def gethostip():
try:
socke = socket.socket(socket.af_inet, socket.sock_dgram)
socke.connect(('8.8.8.8', 80))
ip = socke.getsockname()[0]
finally:
socke.close()
print(ip)
return ip
2、傳送資料端
def send_data():
ip_daar = gethostip()
while true:
# 1. 建立udp套接字
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 2. 準備接收方的位址
dest_addr = (ip_daar, 8080) # 注意 是元組,ip是字串,埠是數字
# 3. 從鍵盤獲取資料
send_data = b'\x08\x00\x00\x00\x81@\x02\x00\x1d\x00\x00\x00\x10'
# send_data = input("請輸入要傳送的資料:")
# 4. 傳送資料到指定的電腦上的指定程式中
udp_socket.sendto(send_data, dest_addr)
print("傳送給客戶端 %s 的資料: %s\n" % (dest_addr, send_data))
sleep(1)
# 5. 關閉套接字
udp_socket.close()
3、資料接收端
def receive_data():
ip_daar = gethostip()
# 1. 建立udp套接字
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 2. 準備接收方的位址
dest_addr = (ip_daar, 8080)
# 3. 繫結位址
udp_socket.bind(dest_addr)
while true:
# 4. 等待接收對方傳送的資料
receive_data, client_address = udp_socket.recvfrom(1024)
print("接收到了客戶端 %s 傳來的資料: %s\n" % (client_address, receive_data))
# 5. 關閉套接字
udp_socket.close()
4、主函式
import socket
from threading import thread
from time import sleep
# 此處新增上述三個函式即可
if __name__ == '__main__':
t = thread(target=send_data)
t.start()
while true:
receive_data()
5、執行結果
至此實現了自己的測試功能。如果不當之處,歡迎指正!
python使用post方式傳送json引數
學習使用request的post介面傳送json資料,寫好 後執行,後台開發人員提示,傳送的資料格式不正確,我看了下沒問題啊,如下 def test api all null self 所有引數為空 payload r requests.post self.base url,data payload...
python傳送郵件(加密方式傳送)
import smtplib from email.mime.text import mimetext from email.header import header mail server smtp.qq.com port 465 sender qq.com 發件人 password a a 發件...
使用 UDP 資料報傳送訊息
使用 udp 資料報傳送短的文字訊息實現是很簡單的並且提供可乙個非常輕量級的訊息傳遞通道。但是這種模式有很大的缺陷,就是不保證的資料的可靠性,有可能會存在丟包的情況,甚至嚴重的情況就是伺服器不可用的時候,會完全丟失你的訊息。不過這個任務會在有些情況下十分有作用 你不關心訊息是否丟失 你不想要終止程式...