python中pi怎么使用_Python中使用Pi的对象传输
首先,一個(gè)警告。pickle允許執(zhí)行任意代碼。不要使用這個(gè)來接受任意連接,最好使用加密來確保您只交換可信的數(shù)據(jù)。即使這樣,也可以考慮使用更安全的交換格式。在
接下來,考慮UDP數(shù)據(jù)包的大小是有限的。您需要確保pickle數(shù)據(jù)足夠小,能夠容納UDP數(shù)據(jù)包(最大有效負(fù)載大小為65507字節(jié))。至少當(dāng)你收到包裹時(shí),你會(huì)知道你有所有的數(shù)據(jù)。使用65535作為緩沖區(qū)大小,以確保可以完全接收大數(shù)據(jù)包。在
發(fā)送時(shí),請(qǐng)確保不要超過大小限制: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數(shù)據(jù)流轉(zhuǎn)換回一個(gè)對(duì)象:
^{pr2}$
我強(qiáng)烈建議您至少驗(yàn)證addr是可信的,否則您可以隨意執(zhí)行任意代碼。65507字節(jié)有足夠的空間發(fā)送pickle來控制進(jìn)程。在
如果您需要發(fā)送更多數(shù)據(jù),那么您將需要使用TCP而不是UDP,因?yàn)槟仨毎凑仗囟ǖ捻樞蚩鐢?shù)據(jù)發(fā)送,分布在多個(gè)數(shù)據(jù)包中,并且需要所有數(shù)據(jù)包都到達(dá)接收端;TCP提供了這一層的可靠性。在這一點(diǎn)上,您必須在pickle前面加上一個(gè)固定數(shù)量的字節(jié),編碼pickle的大小,這樣就可以確保在另一端再次讀取相同數(shù)量的數(shù)據(jù)。在
總結(jié)
以上是生活随笔為你收集整理的python中pi怎么使用_Python中使用Pi的对象传输的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deep Learning(深度学习)学
- 下一篇: 全球首个由AI鉴定保驾护航的B2B奢侈品