Problemas com FIN,ACK

8 respostas
M

Desculpem se já existir algum tópico com a mesma pergunta, eu procurei, mas não vi nada parecido.
A pergunta é criei um servidor que se comunica com sockets tcp, porém ele deve encerrar a conexão quando o cliente enviar um [fin, ack] para ele, devolvendo um [fin, ack] para o cliente e finalizando apos receber o ack de resposta do cliente.

[color=darkblue]Seria mais ou menos assim
Cliente ________Servidor
-------->[fin,ack]-------->
<--------[fin,ack]<--------
--------->[ack]---------->[/color]

O meu problema é que ao receber o [fin, ack] do cliente, o servidor responde com um [ack].
Acho que deu para entender oque eu quero, quem poder me ajudar fico grato.

8 Respostas

O

Como vc esta manipulando o tipo de pacote a ser enviado?

M

Se você está se referindo ao ACK não o controlo, o socket que envia altomaticamente como resposta ao receber algum pacote.
Ja se for o de dados a unica coisa que faço e gerar um OutputStream e depois enviar com um OutputStream.write
Caso não seja isso me exprique melhor, Obrigado.

T

Você usa corretamente o método “shutdown” da classe Socket?

M

Bem não coneço muita coisa, então se falar besteira me desculpe, os únicos dois metodos que conheço com shutdown no nome são o shutdownInput e o shutdownOutput, e fora esses o close que fecha a conexão.
Se der me de um exemplo desse metodo, Obrigado.

O

Achei meio estranho mandar o tipo especifico de pacote… essa manipulaçao da pra fazer em C, mas voltando a questao… procura a documentação de Sockets, método close(); ele fecha a conexão entre os pontos.

M

Eu sei que o metodo close fecha a conexão(é só ver oque eu escrevi ali em cima, a não ser que tenha outro meio dele fazer oque eu preciso) o meu problema e que ele envia um [fin ack] para o outro ponto. O meu problema é diferente, pois so controlo o servidor, segundo quem tenta encerrar a conexão é o cliente o qual não possuo o codigo, e após isso ele espera receber outro [fin ack] de resposta do servidor, e não um ack como meu socket envia.
Não posso encerrar a conexão pelo servidor somente chamando o metodo close, pois preciso receber antes o [fin ack] do cliente e tambem não posso enviar o [ack] de resposta e sim um [fin ack].
Se mais alguem tiver uma idéia :idea: de como fazer, agradeço.

T

m4:
Bem não coneço muita coisa, então se falar besteira me desculpe, os únicos dois metodos que conheço com shutdown no nome são o shutdownInput e o shutdownOutput, e fora esses o close que fecha a conexão.
Se der me de um exemplo desse metodo, Obrigado.

Realmente eu só falei “shutdown” mas é “shutdownInput” e “shutdownOutput”.

Isso você tem de executar antes do close; não sei exatamente qual deles manda o tal do FIN/ACK ou só ACK.

M

Obrigado, mas como eu disse o problema mesmo e que por paadrão o socket envia um ack de resposta ao receber o [fin ack] de finalização do cliente e eu necessitava enviar um [fin ack]. Se alguem souber alguma outra classe que eu possa controlar os flags do tcp.
Quanto aos “shutdownInput” e “shutdownOutput” eu ja utilizava antes, mas obrigado.
Sei que o forúm é de java, porém se o Oitavo_anjo que parece saber um metodo de realizar isso em C, e puder me expricar, ficarei feliz em ouvir

Criado 21 de maio de 2009
Ultima resposta 22 de mai. de 2009
Respostas 8
Participantes 3