Escrevendo em um soquete TCP fechado pelo peer
Eu tenho um aplicativo cliente-servidor onde cada lado se comunica com o outro via soquete TCP.
Eu estabeleço a conexão corretamente e depois danifico o servidor ANTES de quaisquer dados serem gravados no soquete pelo cliente.
O que eu vejo é que o primeirowrite()
tentativa (lado do cliente) é bem sucedida e retorna o número real de bytes escritos, enquanto os seguintes retornam (como eu esperava)-1
(recebendo umSIGPIPE
) eerrno=EPIPE
.
Por que o primeirowrite()
é bem sucedido mesmo que a tomada já esteja fechada?
EDITAR Às vezes também o seguintewrite()
tem um valor de retorno positivo, como se tudo desse certo.