Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Remo The Last
Manlio, stai scherzando vero?
Stai dicendo che il trasporto udp è più affidabile del tcp (best effort)?
ciacia



Il Venerdì 5 Settembre 2014 12:04, Manlio Perillo manlio.peri...@gmail.com ha 
scritto:
 


2014-09-04 12:19 GMT+02:00 Remo The Last py.remothel...@yahoo.it:

Buongiorno lista.
Continuando la mia programmazione relativa all'invio di segnali hex, ho potuto 
confermare quanto letto in linea che un server python con flag MSG_OOB

Perchè mai usi MSG_OOB, ossia messaggi fuori banda,  la cui semantica è 
implementation specific?
http://pubs.opengroup.org/onlinepubs/9699919799/functions/send.html
http://pubs.opengroup.org/onlinepubs/9699919799/functions/recv.html

 
crasha sempre. E questa è una conferma.



Cosa intendi con crasha?
Per me (e per molti altri) crashare significa andare in segfault, ma dubito che 
sia questo il caso.
Probabilmente intendi che  viene sollevata una eccezione, che dovrebbe darti 
utili informazioni aggiuntive.
 
Ma è anche vero che un socket client con flag MSG_OOB taglia a destra di un 
byte il messaggio da inviare.

Come saprai, se fai un send(N bytes) e recv(N bytes) non è detto che recv ti 
restituisca esattamente N bytes, ma di solito qualcosa in meno.

Il tutto poi è complicato dall'uso dei messaggi out-of-band.
Che tipo di socket stai usando?
Che sistema operativo?
 
L'ho potuto appurare sia in locale con una semplice applicazione client-server 
ma anche su un mio server remoto. In intrambi i casi il messaggio è risultato 
tagliato a destra di una byte. Tipo: msg=hello world e arriva hello worl. 
Per ovviare allungo di un byte il messaggio e questo arriva completo come 
messaggio da invio originale.



Questo è un errore molto comune tra chi si avvicina alla programmazione di rete.
Quando invii qualcosa via socket di tipo stream devi **sempre** usare un 
protocollo che permetta a chi riceve i dati di capire dove inizia e dove 
finisce un messaggio.

In particolare, se vuoi spedire messaggi brevi in modo facile, usa i socket di 
tipo SOCK_DGRAM invece di SOCK_STREAM, ma assicurati di capire come funzionano.


Ciao  Manlio ___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Manlio Perillo
2014-09-06 14:02 GMT+02:00 Remo The Last py.remothel...@yahoo.it:

 Manlio, stai scherzando vero?
 Stai dicendo che il trasporto udp è più affidabile del tcp (best effort)?
 ciacia


 No. Sto dicendo che se vuoi dialogare tramite messaggi o usi SOCK_STREAM
con un dato protocollo, oppure usi SOCK_DGRAM.  Se ti senti audace puoi
anche usare SOCK_SEQPACKET (SCTP), che è reliable.
Altrimenti non ha senso parlare di affidabilità, perchè il tuo programma è
errato quindi inaffidabile in partenza.

Nota che UDP su socket di tipo AF_LOCAL (aka UNIX) dovrebbe essere reliable.

 [...]

P.S.:
per favore in futuro quota il messaggio originale *solo* se ti serve per la
risposta, e quota *sopra* e non *sotto* il messaggio; grazie


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Giampaolo Rodola'
2014-09-06 14:50 GMT+02:00 Manlio Perillo manlio.peri...@gmail.com:

 2014-09-06 14:02 GMT+02:00 Remo The Last py.remothel...@yahoo.it:

 Manlio, stai scherzando vero?
 Stai dicendo che il trasporto udp è più affidabile del tcp (best effort)?
 ciacia


 No. Sto dicendo che se vuoi dialogare tramite messaggi o usi
 SOCK_STREAM con un dato protocollo, oppure usi SOCK_DGRAM.  Se ti senti
 audace puoi anche usare SOCK_SEQPACKET (SCTP), che è reliable.
 Altrimenti non ha senso parlare di affidabilità, perchè il tuo programma è
 errato quindi inaffidabile in partenza.

 Nota che UDP su socket di tipo AF_LOCAL (aka UNIX) dovrebbe essere
 reliable.


Aggiungo TCP_NODELAY su socket di tipo SOCK_STREAM (TCP):

import socket
s = socket.socket()
s.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)

In genere viene usato in protocolli molto parlanti quali FTP e SMTP.
Se i messaggi sono brevi lo speedup è considerevole (quasi il doppio)
quindi puoi valutare se usare quello anzichè SOCK_DGRAM (UDP) che come è
noto non è reliable in quanto a recapito e integrità dei dati.
Riguardo MSG_OOB, non riesco proprio a immaginare a cosa ti serva. Ad oggi
credo sia, di fatto, completamente inutile ergo molto probabilmente *non*
ti serve.

--- Giampaolo
http://grodola.blogspot.com/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Manlio Perillo
2014-09-06 15:28 GMT+02:00 Giampaolo Rodola' g.rod...@gmail.com:


 2014-09-06 14:50 GMT+02:00 Manlio Perillo manlio.peri...@gmail.com:

 2014-09-06 14:02 GMT+02:00 Remo The Last py.remothel...@yahoo.it:

 Manlio, stai scherzando vero?
 Stai dicendo che il trasporto udp è più affidabile del tcp (best effort)?
 ciacia


 No. Sto dicendo che se vuoi dialogare tramite messaggi o usi
 SOCK_STREAM con un dato protocollo, oppure usi SOCK_DGRAM.  Se ti senti
 audace puoi anche usare SOCK_SEQPACKET (SCTP), che è reliable.
 Altrimenti non ha senso parlare di affidabilità, perchè il tuo programma
 è errato quindi inaffidabile in partenza.

 Nota che UDP su socket di tipo AF_LOCAL (aka UNIX) dovrebbe essere
 reliable.


 Aggiungo TCP_NODELAY su socket di tipo SOCK_STREAM (TCP):


Questo riguarda le prestazioni; il mio discorso riguardava la logica del
programma.
Usare TCP_NODELAY con il codice originale dell'OP non credo lo renda
corretto.


 Riguardo MSG_OOB, non riesco proprio a immaginare a cosa ti serva. Ad oggi
 credo sia, di fatto, completamente inutile ergo molto probabilmente *non*
 ti serve.


Il problema è che l'OP non ha spiegato chiaramente cosa sta cercando di
fare.
L'unica cosa che mi viene in mente è che sta cercando di inviare segnali
tramite telnet.

 [...]


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Remo The Last
rispondo e per me chiudo il thread:

Il thread era il bug (vedi oggetto) di MSG_OOB e non l'affidabilità dei 
protocolli di rete. Che poi, i nostri cari protocolli, a qualunque livello 
delle stack, sono tutti un buco.

Chiudo dicendo che purtroppo sto su yahoo e che per rispondere al thread, yahoo 
si trasporta tutta la conversazione. Me ne andrò su libero.it prossimamente o 
altra email.


salutoni a tutt@
py.Re



Il Sabato 6 Settembre 2014 15:45, Manlio Perillo manlio.peri...@gmail.com ha 
scritto:
 


2014-09-06 15:28 GMT+02:00 Giampaolo Rodola' g.rod...@gmail.com:



2014-09-06 14:50 GMT+02:00 Manlio Perillo manlio.peri...@gmail.com:

2014-09-06 14:02 GMT+02:00 Remo The Last py.remothel...@yahoo.it:

Manlio, stai scherzando vero?
Stai dicendo che il trasporto udp è più affidabile del tcp (best effort)?
ciacia




No. Sto dicendo che se vuoi dialogare tramite messaggi o usi SOCK_STREAM 
con un dato protocollo, oppure usi SOCK_DGRAM.  Se ti senti audace puoi anche 
usare SOCK_SEQPACKET (SCTP), che è reliable.
Altrimenti non ha senso parlare di affidabilità, perchè il tuo programma è 
errato quindi inaffidabile in partenza.


Nota che UDP su socket di tipo AF_LOCAL (aka UNIX) dovrebbe essere reliable.


Aggiungo TCP_NODELAY su socket di tipo SOCK_STREAM (TCP):



Questo riguarda le prestazioni; il mio discorso riguardava la logica del 
programma.
Usare TCP_NODELAY con il codice originale dell'OP non credo lo renda corretto.
 
Riguardo MSG_OOB, non riesco proprio a immaginare a cosa ti serva. Ad oggi 
credo sia, di fatto, completamente inutile ergo molto probabilmente *non* ti 
serve.



Il problema è che l'OP non ha spiegato chiaramente cosa sta cercando di fare.
L'unica cosa che mi viene in mente è che sta cercando di inviare segnali 
tramite telnet.

 [...]


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Marco Beri
On Sep 6, 2014 9:23 PM, Remo The Last py.remothel...@yahoo.it wrote:

 Chiudo dicendo che purtroppo sto su yahoo e che per rispondere al thread,
yahoo si trasporta tutta la conversazione. Me ne andrò su libero.it
prossimamente o altra email.

Lo fa anche Gmail.

Ma con un po' di buona volontà si riesce a fare tutto.

Garantito.

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Roberto De Ioris

 rispondo e per me chiudo il thread:

 Il thread era il bug (vedi oggetto) di MSG_OOB e non l'affidabilità dei
 protocolli di rete. Che poi, i nostri cari protocolli, a qualunque livello
 delle stack, sono tutti un buco.


Va bene, ma almeno la curiosita' di sapere cosa volevi fare potevi
togliercela :)

Cioe' hai dato l'idea che volevi bucare un server a colpi di messaggi
out of band, cioe' siamo ai livelli di codice swordfish :P (con tutto il
rispetto per il film, che a parte la fanta-informatica trovo divertente)

-- 
Roberto De Ioris
http://unbit.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-06 Per discussione Manlio Perillo
2014-09-06 19:02 GMT+02:00 Roberto De Ioris robe...@unbit.it:


  rispondo e per me chiudo il thread:
 
  Il thread era il bug (vedi oggetto) di MSG_OOB e non l'affidabilità dei
  protocolli di rete. Che poi, i nostri cari protocolli, a qualunque
 livello
  delle stack, sono tutti un buco.
 

 Va bene, ma almeno la curiosita' di sapere cosa volevi fare potevi
 togliercela :)


A me interessava più capire cosa intendesse con bug, riguardo MSG_OOB.
Se intendeva un design bug, in molti condividono; ma lui parlava di crash
in un particolare pezzo di codice senza dare maggiori dettagli come il
traceback dell'eccezione.

 [...]


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-05 Per discussione Manlio Perillo
2014-09-04 12:19 GMT+02:00 Remo The Last py.remothel...@yahoo.it:

 Buongiorno lista.
 Continuando la mia programmazione relativa all'invio di segnali hex, ho
 potuto confermare quanto letto in linea che un server python con flag
 MSG_OOB


Perchè mai usi MSG_OOB, ossia messaggi fuori banda,  la cui semantica è
implementation specific?
http://pubs.opengroup.org/onlinepubs/9699919799/functions/send.html
http://pubs.opengroup.org/onlinepubs/9699919799/functions/recv.html


 crasha sempre. E questa è una conferma.


Cosa intendi con crasha?
Per me (e per molti altri) crashare significa andare in segfault, ma dubito
che sia questo il caso.
Probabilmente intendi che  viene sollevata una eccezione, che dovrebbe
darti utili informazioni aggiuntive.


 Ma è anche vero che un socket client con flag MSG_OOB taglia a destra di
 un byte il messaggio da inviare.


Come saprai, se fai un send(N bytes) e recv(N bytes) non è detto che recv
ti restituisca esattamente N bytes, ma di solito qualcosa in meno.

Il tutto poi è complicato dall'uso dei messaggi out-of-band.
Che tipo di socket stai usando?
Che sistema operativo?


 L'ho potuto appurare sia in locale con una semplice applicazione
 client-server ma anche su un mio server remoto. In intrambi i casi il
 messaggio è risultato tagliato a destra di una byte. Tipo: msg=hello
 world e arriva hello worl. Per ovviare allungo di un byte il messaggio e
 questo arriva completo come messaggio da invio originale.


Questo è un errore molto comune tra chi si avvicina alla programmazione di
rete.
Quando invii qualcosa via socket di tipo stream devi **sempre** usare un
protocollo che permetta a chi riceve i dati di capire dove inizia e dove
finisce un messaggio.

In particolare, se vuoi spedire messaggi brevi in modo facile, usa i socket
di tipo SOCK_DGRAM invece di SOCK_STREAM, ma assicurati di capire come
funzionano.

Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-04 Per discussione Roberto De Ioris

 Buongiorno lista.
 Continuando la mia programmazione relativa all'invio di segnali hex, ho
 potuto confermare quanto letto in linea che un server python con flag
 MSG_OOB crasha sempre. E questa è una conferma.


 Ma è anche vero che un socket client con flag MSG_OOB taglia a destra di
 un byte il messaggio da inviare. L'ho potuto appurare sia in locale con
 una semplice applicazione client-server ma anche su un mio server remoto.
 In intrambi i casi il messaggio è risultato tagliato a destra di una byte.
 Tipo: msg=hello world e arriva hello worl. Per ovviare allungo di un
 byte il messaggio e questo arriva completo come messaggio da invio
 originale.




Puoi pastare un po' di codice ?

Parliamo comunque di una tecnologia piu' che deprecata e con ogni
implementazione che si comporta in modo diverso.

Forse mi e' sfuggito e in tal caso chiedo scusa, ma a cosa ti serve ?


-- 
Roberto De Ioris
http://unbit.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] socket e MSG_OOB: bug?

2014-09-04 Per discussione Remo The Last


1. utilizzo l'invio di messaggi in esadecimale per dare comandi tipo ctrl-c, 
ctrl-alt-\, alt-F4 ecc. a macchine remote. Ed è anche poco etico. Sono dei veri 
e propri segnali in esadecimale a seguito della mappatura della tastiera e 
visualizzazione delle tabelle in linea di messaggi in hex

2. utilizzo dei semplici socket client-server che per il server dovrebbero 
ricevere semplicemente con la stringa:

# server
data=conn.recv(1024,conn.MSG_OOB) # crasha sempre

# client:
s.send(hex,MSG_OOB) # taglia a destra un byte


E' vero che è una vecchia programmazione, ma sono sempre alla ricerca di metodi 
poco etici per approcciarmi a macchine remote.


ciao
py.Re

NB: non so se il messaggio è inviato regolarmente in lista in quanto con il 
remake completo di yahoo, le email risultano conversazioni con reply e forward 
che sono un casino.

ari
py.Re



Il Giovedì 4 Settembre 2014 12:23, Roberto De Ioris robe...@unbit.it ha 
scritto:
 



 Buongiorno lista.
 Continuando la mia programmazione relativa all'invio di segnali hex, ho
 potuto confermare quanto letto in linea che un server python con flag
 MSG_OOB crasha sempre. E questa è una conferma.


 Ma è anche vero che un socket client con flag MSG_OOB taglia a destra di
 un byte il messaggio da inviare. L'ho potuto appurare sia in locale con
 una semplice applicazione client-server ma anche su un mio server remoto.
 In intrambi i casi il messaggio è risultato tagliato a destra di una byte.
 Tipo: msg=hello world e arriva hello worl. Per ovviare allungo di un
 byte il messaggio e questo arriva completo come messaggio da invio
 originale.




Puoi pastare un po' di codice ?

Parliamo comunque di una tecnologia piu' che deprecata e con ogni
implementazione che si comporta in modo diverso.

Forse mi e' sfuggito e in tal caso chiedo scusa, ma a cosa ti serve ?


-- 
Roberto De Ioris
http://unbit.it___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python