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

Rispondere a