node.jsのnet.socketを利用したソケット通信プログラムで通信エラーが多発してしまいました。
socket.write()の完了時コールバックでsocket.destroy()していたのですが、これだと受信に失敗することがありました。socket.end()を呼べば、通信先にFINを送信するので、正常に通信切断できるようになりました。
socket.write("送信データ"); socket.end();
とするか、送信データが1つだけなら
socket.end("送信データ");
となります。