Socket bi-direcional TCP

5 respostas
E

Caros,

Por favor, tenho encontrado varios exemplos de servidores sockets na internet, porém preciso de uma aplicação um pouco mais complexa e não consigo achar nenhuma referencia…

Preciso montar um servidor socket tcp que receba informações de equipamentos e que também possa enviar informações para esse equipamento… o problema vem aqui…

Preciso conseguir fazer com que o envio seja independente do recebimento, ou seja, não posso aguardar uma informação chegar para enviar outra. Eu preciso a qualquer momento que o equipamento esteja conectado enviar uma mensagem para ele, mesmo que ele esteja ha algum tempo sem enviar informações.

O equipamento envia informações binarias em bytes e não texto simples.

Quem puder me passar uma referencia ou algum exemplo de algo similar… agradeço muito.

5 Respostas

E

Você pode escrever e ler de um socket ao mesmo tempo. Você pode ter uma thread que só lê desse socket e uma que escreve a qualquer momento.

E

Por favor, vc teria algum link com um exemplo desses?

rmendes08

Pois é , mas se eu entendi bem, ele quer que o servidor possa também, há qualquer momento, iniciar uma conexão.

Nesse caso, o que você vai precisar é de uma aplicação peer-to-peer, ou seja, tanto o nó central (servidor) quanto os seus equipamentos precisam manter portas abertas, de maneira que qualquer um possa iniciar uma conexão. Ou seja, todo mundo é cliente e servidor ao mesmo tempo.

Uma outra abordagem, é manter uma lista de conexões no servidor, e em um intervalo regular de tempo, ficar mandando algum pacote como mecanismo para manter a conexão ativa. O problema nesse caso, é que os timeouts de conexão dependem de parâmetros do SO ou do hardware em questão.

douglaskd

só fazer como o entanglement disse:

exemplificando de forma bastante simples…

new thread(){

while(true){

//aqui envia informações para o equipamento

}

}

new thread(){

while(true){

//aqui recebe informações do equipamento

}

}

E

Acho que entendi… só tenho que testar se na conexão não vai dar galho… mas acho que é isso que eu tava procurando… Muito obrigado!!!

Criado 5 de setembro de 2012
Ultima resposta 5 de set. de 2012
Respostas 5
Participantes 4