No podrías hacer un check de la conexion para saber si la puedes cerrar o no.., porque puede que haya otro call por ahi... intenta con ésto en el lado del server no en el cliente
Cita: ...
Socket socketForClient = tu_tcpListener.Accept();
...
if (socketForClient.Connected)
...
socketForClient.Close();
No sé si estás haciendo uso del algun stream, si es así asegurate de tambien hacer un flush antes de cerrar tu socket.
Checalo
Salu2