2014-06-26 20 views
7

Ho un tipo di array di ([1,2,3,4,5,6],[1,2,3,4,5,6]) questo. Devo inviarlo su un socket STREAM/TCP in python. Quindi devo ricevere lo stesso array sul lato ricevente.come inviare un array su un socket in python

+0

trovare il modo di codifica in byte. Qual è il modo migliore dipende probabilmente dai tuoi dati. Vuoi sempre inviare matrici di piccoli numeri? – Ryan

+0

come nota a margine ... sembra una tupla di array (elenchi), non una matrice reale. Inoltre .... pickle potrebbe servirti bene: https://docs.python.org/3.2/library/pickle.html?highlight=pickle#pickle –

+0

in realtà voglio mandare una matrice 5x5 e contiene valori float.per favore, dai io il modo migliore per farlo. con il codice, se possibile. grazie – user3774358

risposta

3

È possibile serializzare l'oggetto prima di inviarlo al socket e alla fine del destinatario Deserializzare. Controllare this

20

prese di corrente sono flussi di byte, quindi ideale è quello di scrivere il protocollo (leggi this)

Questo è un esempio di base senza protocollo e si dovrebbe preoccuparsi di buffer -> recv(). Se è troppo piccolo, i dati verranno tagliati. Ecco perché è necessario implementare un protocollo, se si inviano dimensioni di dati sconosciute.

Cliente:

import socket, pickle 

HOST = 'localhost' 
PORT = 50007 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((HOST, PORT)) 
arr = ([1,2,3,4,5,6],[1,2,3,4,5,6]) 
data_string = pickle.dumps(arr) 
s.send(data_string) 

data = s.recv(4096) 
data_arr = pickle.loads(data) 
s.close() 
print 'Received', repr(data_arr) 

Server:

import socket 

HOST = 'localhost' 
PORT = 50007 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((HOST, PORT)) 
s.listen(1) 
conn, addr = s.accept() 
print 'Connected by', addr 
while 1: 
    data = conn.recv(4096) 
    if not data: break 
    conn.send(data) 
conn.close() 
+2

Prese di python pronte per l'incollaggio chiare e pratici how-to – Kruser

+0

Come può Stampo il valore dell'array su un particolare indice? –

+0

@AnuragSingh fornire un esempio di dati e il risultato che è necessario. – danielpopa

Problemi correlati