이 분산 컴퓨팅 프로젝트에서 작업 중입니다. '노드'중 일부를 시뮬레이션하지 않아도됩니다. 즉, 어떤 경우에도 읽기 또는 쓰기가 불가능합니다. 나가는 tcp connections.One 방법은 메시지를 읽고 버리는 것이지만 C/C++에서 inbuilt 옵션을 찾고 소켓이 들어오는 메시지를 버리도록 설정할 수 있습니다.C++에서 소켓 읽기/쓰기 버퍼를 비우는 방법
답변
소켓을 닫음으로써 오류를 시뮬레이트하면 문제가 발생하는 경우가 많습니다. 입니다. 닫힌 지점과 응답하지 않는 지점을 모두 테스트하려고합니다. 소켓을 닫는 것과 같은 호스트 솔루션은 호스트 오류를 시뮬레이트하지만, 네트워크 오류는 애플리케이션/OS 지원 솔루션에서 필요합니다.
폐쇄 된 소켓은 스스로 청소합니다. 닫힌 소켓으로 실행중인 OS는 액세스하려고하면 오류를 반환합니다. 이 모든 것들은 당신이 확인해야 할 것들입니다. 그러나 실제 장애는 특히 호스트와는 달리 네트워크에서 패킷을 삭제합니다. 이렇게하면 tcp가 종료되는 동안 시스템이 대기 할 수 있습니다.
네트워크 장애를 시뮬레이트하는 가장 좋은 방법은 방화벽 규칙입니다. 방화벽에서 연결의 한쪽 또는 양쪽 끝을 차단하여 네트워크 오류를 시뮬레이트합니다. iptables 및 다른 솔루션을 사용하면 패킷 또는 패킷의 일부를 특정 특성으로 삭제할 수 있습니다.
"실패한"노드가 사용중인 모든 소켓을 닫으십시오.
질문에 언급되지 않은 OP 노드 응용 프로그램이 어떻게 수행되는지에 따라 ... 실패한 노드를 시뮬레이션하는 가장 쉬운 방법은 노드 응용 프로그램을 '종료'한 다음 모든 TCP '닫기'패킷을 건너 뛰고 다른 노드 연결이 끊어 졌거나 (첫 번째 단계로서) 노드의 모든 통신 소켓을 수동으로 닫을 때 인식하지 못합니다. 이는 다른 노드가 '적절한'방식으로 닫힌 연결을 인식 할 것이지만 특정 노드에서 시스템의 나머지 동작이 손실되는 방식을 확인하기에 충분하기 때문에 실험을 완전히 정리하지는 못함을 의미합니다.
그게 무슨 뜻이야? – Jean
나는 내가 말한 것을 정확하게 의미했다. OP 노드 응용 프로그램이 어떻게 수행되는지 (질문에 언급되지 않은) 방법에 따라 ... 실패한 노드를 시뮬레이션하는 가장 쉬운 방법은 노드 응용 프로그램을 '종료'한 다음 모든 TCP '닫기'패킷을 건너 뛰고 다른 노드가 인식하지 못하게하는 것입니다 연결이 끊어 지거나 (첫 번째 단계로) 노드의 모든 통신 소켓을 수동으로 닫습니다. 이는 다른 노드가 '적절한'방식으로 닫힌 연결을 인식 할 것이지만 특정 노드에서 시스템의 나머지 동작이 손실되는 방식을 확인하기에 충분하기 때문에 실험을 완전히 정리하지는 못함을 의미합니다. – evilruff
하지만 문제는 '생각할 곳'없이 곧바로 완전한 대답을하면 뇌의 손상이 심할 수 있다는 것입니다. 올바른 방향을 가리키면 다음과 같은 준비가 된 답이 훨씬 더 많을 것입니다. 왜 그런 식으로해야하는지 이해하십시오. – evilruff
- 1. C에서 stardard 입출력 버퍼를 비우는 방법
- 2. C에서 소켓 데이터를 읽는 버퍼를 만드는 방법
- 3. DOS 배치에서 키보드 버퍼를 비우는 방법?
- 4. 빈 소켓 버퍼를 처리하는 방법
- 5. 리눅스에서 소켓 버퍼를 지우는 방법
- 6. C에서 할당 된 메모리를 할당하고 비우는 방법
- 7. 직렬화 C에서 소켓 프로그래밍 ++
- 8. 실제로 데이터를 쓰지 않고 Java에서 버퍼를 비우는 방법?
- 9. 부스트 :: 직렬화를 사용할 때 파일 버퍼를 비우는 방법?
- 10. C에서 문자 버퍼를 청소하십시오.
- 11. C에서 소켓 프로그램을 루프하는 방법
- 12. C에서 소켓 재설정을 디버그하는 방법
- 13. 버퍼를 보내는 TCP 소켓 프로그램.
- 14. C-String을 비우는 적절한 방법
- 15. C에서 2d char 배열을 비우는 방법은 무엇입니까?
- 16. 안드로이드에서 gridview를 비우는 방법?
- 17. iframe을 비우는 방법?
- 18. JS 개체를 비우는 방법?
- 19. UITableViewCell의 UIImageView를 비우는 방법
- 20. - TDataSet에서 메모리를 비우는 방법?
- 21. DataGridviewCell의 기본값을 비우는 방법
- 22. plupload 큐를 비우는 방법
- 23. 스레드를 "비우는"방법
- 24. 오라클에서 데이터베이스를 비우는 방법
- 25. sqlite 데이터베이스를 비우는 방법?
- 26. 테이블을 비우는 방법
- 27. C에서 두 문자열을 연결하고 동적 버퍼를 할당하십시오.
- 28. C에서 소켓 프로그래밍을위한 ioctl()
- 29. TCP 소켓 C에서 읽기
- 30. 소켓 : JAVA로 C에서
방화벽 솔루션이이 문제에 대한 올바른 해결책은 아니지만 소켓을 닫는 대신 장애 노드로 항상 응답 한 좀비로 바꿨습니다. 그 일종의 돌봐. –