Question

J'utilise cette ligne pour envoyer un message via une prise Ruby (1.8.7):

@@socket.send login_message, 0

(Cela fonctionne bien)

Quel est le second paramètre pour? Je ne peux pas trouver la méthode d'envoi dans la documentation de l'API Ruby ...

Je pensais d'abord qu'il avait une certaine longueur de style C du message. Voilà pourquoi je login_message.length comme second paramètre. Cela a fonctionné, mais je rencontré un comportement étrange:

Tout fonctionne bien lorsque le second paramètre est un nombre impair. Si c'est un nombre pair le dernier caractère se perd à la réception de l'autre côté (L'autre côté est un programme C ++ avec une prise C). Je visitai le trafic réseau avec Wireshark et a remarqué que les paquets semblent bons. Toutes les données sont complètes. Pourquoi le dernier caractère perdu quand je le reçois?

Merci Lennart

Était-ce utile?

La solution

Ceci est le paramètre flags, le même que le dernier paramètre à la send() appel système . Normalement, il devrait être 0, mais peut-être quelque chose comme Socket::MSG_OOB (pour envoyer des données hors bande). Pour Ruby 1.9, cela est documenté sous BasicSocket .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top