簡體   English   中英

Python-在以太網數據包中發送/接收一個numpy數組

[英]Python - send/receive a numpy array in an Ethernet Packet

我需要建立一個網絡,以將numpy數組從主機計算機傳輸到客戶端計算機。 除非我必須使用16位整數,否則這可以盡可能簡單。 我做對了嗎? 我應該使用更好的功能/命令嗎? (Win7、64位,Python 2.7)到目前為止,它似乎可以正常工作,但是我對網絡一無所知,但是我還沒有找到一個不錯的教程來解釋所有這些如何結合在一起。 (請提出一個建議)謝謝!

server.py

import socket, time, numpy as np
myDict = {1:1, 2:2, 3:3}
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while 1:
    data = np.array(myDict.values(), dtype = np.int16).flatten()
    s.sendto(data, ('<broadcast>',5252))
    time.sleep(1)

client.py

import socket, numpy as np
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', 5252))
data = np.empty((1,6), dtype = np.int16)
s.recv_into(data)
print data

您正在使用數據報套接字(UDP)傳輸數據。 UDP是一種盡力而為的服務,不能保證您發送的每個數據報都會在遠程端傳遞。

一種替代方法是使用TCP,但是您需要先對numpy數據進行序列化,然后再通過套接字發送,然后在收到時反序列化。

如果您可以使用不可靠的UDP傳輸,那么現在您可以做什么。

編輯:使用廣播時-您基本上是將相同的數據發送到直接連接的網絡中的所有設備。 任何監聽UDP端口5252的設備都將能夠接收您正在發送的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM