python中pi怎么使用_Python中使用Pi的对象传输
首先,一個警告。pickle允許執行任意代碼。不要使用這個來接受任意連接,最好使用加密來確保您只交換可信的數據。即使這樣,也可以考慮使用更安全的交換格式。在
接下來,考慮UDP數據包的大小是有限的。您需要確保pickle數據足夠小,能夠容納UDP數據包(最大有效負載大小為65507字節)。至少當你收到包裹時,你會知道你有所有的數據。使用65535作為緩沖區大小,以確保可以完全接收大數據包。在
發送時,請確保不要超過大小限制:MAX_UDP_SIZE = 65507 # https://en.wikipedia.org/wiki/User_Datagram_Protocol
a = pickle.dumps(p)
if len(a) > MAX_UDP_SIZE:
raise ValueError('Message too large')
s.sendto(a, (host, port))
另一方面,使用^{}將pickle數據流轉換回一個對象:
^{pr2}$
我強烈建議您至少驗證addr是可信的,否則您可以隨意執行任意代碼。65507字節有足夠的空間發送pickle來控制進程。在
如果您需要發送更多數據,那么您將需要使用TCP而不是UDP,因為您必須按照特定的順序跨數據發送,分布在多個數據包中,并且需要所有數據包都到達接收端;TCP提供了這一層的可靠性。在這一點上,您必須在pickle前面加上一個固定數量的字節,編碼pickle的大小,這樣就可以確保在另一端再次讀取相同數量的數據。在
總結
以上是生活随笔為你收集整理的python中pi怎么使用_Python中使用Pi的对象传输的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deep Learning(深度学习)学
- 下一篇: 全球首个由AI鉴定保驾护航的B2B奢侈品