Re: [Python] socket e MSG_OOB: bug?
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 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 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 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?
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?
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?
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 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-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?
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?
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