Domanda

Sto usando questa linea per inviare un messaggio tramite un rubino (1.8.7) presa:

@@socket.send login_message, 0

(Questo funziona bene)

Qual è il secondo parametro per? Non riesco a trovare il metodo di invio nella documentazione API di Ruby ...

ho pensato che fosse un po 'di lunghezza stile C del messaggio. Questo è il motivo per cui ho usato login_message.length come secondo parametro. Che ha lavorato, ma ho incontrato uno strano comportamento:

Tutto funziona bene quando il secondo parametro è un numero dispari. Se si tratta di un numero pari l'ultimo carattere si perde a ricevere dall'altra parte (L'altro lato è un programma C ++ con una presa C). Ho controllato il traffico di rete con Wireshark e ho notato che i pacchetti sembrano buone. Tutti i dati è stata completata. Perché l'ultimo carattere perso quando lo ricevo?

Grazie Lennart

È stato utile?

Soluzione

Questo è il parametro flags, lo stesso che l'ultimo parametro alla send() chiamata di sistema . Normalmente dovrebbe essere 0, ma può essere qualcosa come Socket::MSG_OOB (per inviare i dati out-of-band). Per Ruby 1.9 questo è documentato sotto BasicSocket .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top