Pregunta

Estoy utilizando esta línea para enviar un mensaje a través de un Ruby (1.8.7) del zócalo:

@@socket.send login_message, 0

(Esto funciona bien)

¿Cuál es el segundo parámetro para? No puedo encontrar el método de envío de los documentos de la API de Ruby ...

Al principio pensé que era un poco la longitud del estilo C del mensaje. Es por esto que he usado login_message.length como segundo parámetro. Eso funcionó, pero me encontré con un comportamiento extraño:

Todo funciona bien cuando el segundo parámetro es un número impar. Si se trata de un número par el último carácter se pierde en la recepción en el otro lado (El otro lado es un programa en C ++ con una toma de C). Inspeccioné el tráfico de red con Wireshark y se dio cuenta de que los paquetes se ven bien. Todos los datos se ha completado. ¿Por qué se pierde el último carácter cuando lo reciba?

Gracias Lennart

¿Fue útil?

Solución

Este es el parámetro banderas, el mismo que el último parámetro a la send() llamada al sistema. Normalmente debe ser 0, pero puede ser algo como Socket::MSG_OOB (para enviar datos fuera de banda). Para Ruby 1.9 esto está documentado bajo BasicSocket .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top