soquetes Java com a dos dados da banda
-
22-08-2019 - |
Pergunta
Alguém sabe como receber (como saber que você recebeu) out-of-band dados com soquetes Java? Em particular já li a documentação para sendUrgentData e setOOBInline que estabelece que:
Note, apenas suporte limitado é fornecido para manipulação de dados urgentes recebidas. Em particular, nenhuma comunicação de dados urgente de entrada é fornecida e não há nenhuma capacidade para distinguir entre dados normais e dados de urgência, salvo fornecidas por um protocolo de nível mais elevado.
Mas eu ainda estou esperando que alguém tem uma solução: -)
Mais detalhes:
Estou enviando objetos serializados Através da tomada e eu realmente não estou vendo como posso encontrar um byte OOB "aleatório" inserido na corrente (além do fato de que o Java vai me dar uma exceção quando eu vou tentar desserializar o objeto).
Solução
Tomcat tem uma implementação mantido de tomada JNI que pode ler pacotes urgentes de uma forma OOB.
Outras dicas
Parece que Java, até Java 6 (I não investigar Java 7 desde que eu não sei se eles decidiram ao certo o que vai ou não) e parece que Java não fornece qualquer apoio em tudo para a leitura de informações TCP urgente de uma maneira out-of-band. E parece que esta é uma escolha deliberada, até agora.
No entanto, I fez encontrar um usuário que implementou sua própria solução , usando JNI, para ler com sucesso dados urgentes fora do fluxo. Este hack é muito antiga e pode ou não pode trabalhar em recente JDK da. Eu não tentei isso mesmo! Sua milhagem pode variar. :) Mas espero que isso irá ajudá-lo.