네트워크 대기 시간을 전송에 적용하는 "man-in-middle"스타일 응용 프로그램을 만들었습니다. 악의적 인 용도로 사용하지 말고 선언해야합니다.타이머를 기반으로 구조체의 개별 데이터 출력
그러나 데이터 구조 (LinkedList<string> buffer = new LinkedList<string>();
)의 올바른 출력 메커니즘에 문제가 있습니다. 어떻게해야합니까
: clientA에서 구조로
데이터 읽기. ClientB에 데이터를 해제 할 때 추적 개별적 또는 전체적인 타이머 사용
if (buffer.First != null && buffer.Last != null) { buffer.AddAfter(buffer.Last, ServerRead.ReadLine().ToString());
} else buffer.AddFirst(ServerRead.ReadLine().ToString());. (대기 시간을 조정할 수있는 조정 가능한 타이머)
- 구조의 항목에 대한 타이머가 트리거되어 clientB에 패킷을 릴리스합니다.
정리 무료 데이터 구조 노드
if (buffer.First != null) {
clientWrite.WriteLine(buffer.First.Value.ToString());
clientWrite.Flush();
buffer.RemoveFirst(); }
그러나 나는 clientB에 데이터 출력을 처리하는 스레드를 트리거하는 글로벌 타이머를 만들 수 System.Windows.Forms.Timer
를 사용하려고하고있다. 그러나이 기술은 너무 느릴 때도 마찬가지입니다. myTimer.Interval = 1;
이것은 목록을 지우고 추가 할 때 동시 처리 문제를 만듭니다. 일시적인 해결책은 자원을 잠그는 것입니다. 그러나 이것이 느린 것을 추가하는 것 같아요. 데이터 출력의 성능.
질문 : 나는 데이터에 (달걀 타이머 효과와 같은) 타이머를 데이터 구조에 데이터를 저장하고 적용 할 수있는 솔루션에 대한 몇 가지 아이디어가 저장이 필요하고 타이머가 다 떨어지기 때에 전송됩니다 다른 고객들에게가는 길.
감사합니다.
은 타이머의 정확도에 대한 제한점에 대해 흥미로운 점이지만 타이머를 만드는 데 소요되는 오버 헤드에는 의미가 있습니다. 당신의 대답은 많은 의미를 갖습니다. 그것이 어떻게 수행되는지 볼 수 있습니다. 감사. – House
'TimeSpan.FromSeconds (1.0);이 변수가 동적 인 경우, 항목을 큐에서 빼낸 후에 새 값으로 다시 초기화해야합니다 (위 단락에서 말한 것처럼). 감사. – House