완벽하게 작동하는 서버를 만들었습니다. 그러나 DDoS 공격에 대해 테스트하기로 결정했을 때 주요 메모리 누수가 발견되었습니다. 아래의 코드는 RAM을 채우고 (DDoS 때) 결국 컴퓨터가 다운됩니다. 나는 메모리 누수가 여전히 존재하지만 대응책을 구현하려고했습니다. 현재 듣고있는 코드는 다음과 같습니다.TcpClient 메모리 누수
TcpClient connection = server.AcceptTcpClient();
if (!IpByConnection.ContainsKey(connection.Client.RemoteEndPoint.ToString().Split(':')[0])) {
IpByConnection.Add(connection.Client.RemoteEndPoint.ToString().Split(':')[0], connection);
CipherNetwork network = new CipherNetwork(connection);
network.ListenOnDifferentThread(true);
network.DisconnectOnError(true);
network.StartListening();
TotalConnections += 1;
} else {
connection.Close();
}
이 메모리 누수는 어떻게 수정합니까?
편집 : 언급하는 것을 잊어 버렸습니다.이 메서드는 별도의 스레드에서 실행됩니다.
EDIT 2 : null로 설정하려고했는데 둘 다 삭제했습니다.
질문이 있으십니까? – phoog
게시물을 편집하여 질문을 추가했습니다. – Brodie
BTW. 문제와 관련이 없지만 IPV6 주소를 가진 사람이 연결되어 있으면 서비스가 실패합니다. –