
paulo1205
(usa Ubuntu)
Enviado em 04/10/2012 - 03:31h
Você em princípio não tem como saber se um datagrama chegou ao outro lado (a não que você esteja do outro lado).
O TCP, no entanto, tem um mecanismo de notificação de recebimento, que é essencial para que o protocolo implemente um de suas características principais, que é a retransmissão automática. O sistema mantém os dados que sua aplicação envia no buffer de saída, até que ele receba o aviso de recebimento desses dados e, só então, libere aquela parte do buffer novamente.
Se você tiver uma aplicação que precise fazer o controle de fluxo por si mesma, talvez deva repensar se quer mesmo usar TCP, pois você estará duplicando algo que o kernel já faz sozinho. Mas você poderia obter um efeito desse tipo controlando os tamanhos dos buffers de transmissão e repetição, e talvez usando a opção TCP_NODELAY no seu socket.