python中pi怎么使用_Python中使用Pi的对象传输
首先,一個警告。pickle允許執(zhí)行任意代碼。不要使用這個來接受任意連接,最好使用加密來確保您只交換可信的數(shù)據(jù)。即使這樣,也可以考慮使用更安全的交換格式。在
接下來,考慮UDP數(shù)據(jù)包的大小是有限的。您需要確保pickle數(shù)據(jù)足夠小,能夠容納UDP數(shù)據(jù)包(最大有效負載大小為65507字節(jié))。至少當你收到包裹時,你會知道你有所有的數(shù)據(jù)。使用65535作為緩沖區(qū)大小,以確??梢酝耆邮沾髷?shù)據(jù)包。在
發(fā)送時,請確保不要超過大小限制: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)換回一個對象:
^{pr2}$
我強烈建議您至少驗證addr是可信的,否則您可以隨意執(zhí)行任意代碼。65507字節(jié)有足夠的空間發(fā)送pickle來控制進程。在
如果您需要發(fā)送更多數(shù)據(jù),那么您將需要使用TCP而不是UDP,因為您必須按照特定的順序跨數(shù)據(jù)發(fā)送,分布在多個數(shù)據(jù)包中,并且需要所有數(shù)據(jù)包都到達接收端;TCP提供了這一層的可靠性。在這一點上,您必須在pickle前面加上一個固定數(shù)量的字節(jié),編碼pickle的大小,這樣就可以確保在另一端再次讀取相同數(shù)量的數(shù)據(jù)。在
總結(jié)
以上是生活随笔為你收集整理的python中pi怎么使用_Python中使用Pi的对象传输的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deep Learning(深度学习)学
- 下一篇: python中单行注释采用的符号是什么_