haize Если у вас в netstat висит много соединений со статусами типа CLOSE_WAIT, FIN_WAIT и прочими отличными от ESTABLISHED. То следует уведомлять удаленный сервер, что данных больше не будет с помощью метода shutdown() с параметром SHUT_RDWR. Но это верно для TCP сокетов, а вот UDP в netstat с такими статусами отображаться не может.

Т.е. ваш метод disconnect должен выглядеть так:
def disconnect(self):
if self.link:
try:
self.link.shutdown(socket.SHUT_RDWR)
except socket.error, e:
if e.errno != 9:
raise
self.link.close()
self.link = None