Pergunta

Eu estou usando esta linha para enviar uma mensagem através de uma tomada Ruby (1.8.7):

@@socket.send login_message, 0

(Esta multa funciona)

O que é o segundo parâmetro para? Não consigo encontrar o método de envio no rubi docs API ...

Primeiro pensei que era algum comprimento estilo C da mensagem. É por isso que eu usei login_message.length como segundo parâmetro. Isso funcionou, mas eu encontrei um comportamento estranho:

Tudo funciona bem quando o segundo parâmetro é um número ímpar. Se é um número par o último caractere se perde a receber do outro lado (O outro lado é um programa C ++ com um soquete C). I inspecionados o tráfego de rede com Wireshark e notou que os pacotes de boa aparência. Todos os dados estão completos. Por que é o último caractere perdido quando eu recebê-lo?

Obrigado Lennart

Foi útil?

Solução

Este é o parâmetro bandeiras, o mesmo que o último parâmetro para a send() chamada de sistema . Normalmente ele deve ser 0, mas pode ser algo como Socket::MSG_OOB (para enviar out-of-band de dados). Para Ruby 1.9 isso está documentado sob BasicSocket .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top