문제

한 컴퓨터에서 다른 컴퓨터로 이미지를 보내는 프로그램을 개발 중입니다 (마우스/키보드 입력이없는 원격 지원과 유사). 내가 이것을 테스트하는 데 사용하는 두 컴퓨터는 하나의 Windows XP 시스템과 하나의 Windows Vista입니다. 고정식 XP 머신이 라우터에 직접 연결되어 있고 무선을 통해 연결된 랩톱이 있습니다.

XP에서 Vista 로의 전송은 훌륭하게 작동하며 Vista에 표시되는 이미지의 지속적인 흐름을 얻을 수 있습니다. 그러나, 내가 그것을 뒤집고 Vista에서 XP로 이미지를 보내면 작동하지 않습니다. 또한 로컬 "사본", 즉 네트워크가 없으면 이미지의 흐름을 얻지 못하고 Vista와 XP에서 작동합니다. 두 기계에서 정확히 동일한 프로그램입니다.

나는 그것이 중요하다고 생각하지 않지만 이미지에 GDI+를 사용하고 있습니다. 그래서 네트워크의 스트림을 통해 .jpg를 보내고 다른쪽에 재건됩니다.

내 네트워크 메시지 클래스가 호출됩니다 NetMsg. 그것은 a로 구성됩니다 char* type 그리고 a char* data. 유형은 데이터를 해석하는 방법을 결정하고 여기서는 문제가 없습니다.
컴퓨터 #1과 #2를 호출합시다.
연결이 만들어지고 #1에 영역을 표시하면 다음을 보내려고합니다.
001>#1 #2에 표시된 영역과 동일한 크기의 창을 #2로 얻으려면 유형 크기 조정 // #1에 표시됩니다.
002>#1은 유형을 보냅니다. picture_data // 이것은 실제 이미지 데이터입니다.
003>#2 위의 두 메시지를받은 후 유형 request_more // 2를 보냅니다.
004>#1 단계까지

XP에서 Vista로 이미지 데이터를 보낼 때 디버깅을 귀찮게하지 않았습니다. 원하는 것처럼 훌륭하게 작동하기 때문입니다. 그러나 Vista가 XP로 보낼 때 다음을 발견했습니다.

  • 받은 데이터는 실제로 두 가지가 될 수 있습니다 NetMsgs. 데이터를 여러로 분할하여이를 지원합니다. NetMsgs
  • 수신 된 데이터는 불완전 할 수 있습니다. 즉, 더 많은 데이터를 기다려야합니다. 나는 a를 표시함으로써 이것을 지원한다 NetMsg 불완전하고 다음 Datatransmission에서 완료하십시오. (첫 번째 단계의 조합뿐만 아니라)

이것은 일부 이미지가 올바르게 전송 되었기 때문에 거의 트릭을 수행했지만 갑자기 멈췄습니다. 나는 이것을 철저히 디버깅하지 않았으므로 데이터가 왜 멈췄는지 모르겠습니다.

내가 이해하지 못하는 것은 XP에서 Vista로 보낼 때 훌륭하지만 다른 방법은 아닙니다. 내가 무엇을 놓치고 있습니까?

코드 추출물이 필요한 경우 알려주십시오. 그러나 대략 500 행입니다. 그렇지 않으면 Vista에서 XP로 데이터를 보낼 때 알려진 문제를 찾고 있습니다.

모든 도움 및/또는 피드백에 감사드립니다!

도움이 되었습니까?

해결책 3

그것은 실제로 두 컴퓨터에서 차단하고 있었고 둘 다 상대방이 응답하기를 기다리고있었습니다.

다른 팁

확실하게 아무 말도하기가 어렵습니다. 그러나 프로그램에 대한 테스트 스위트를 작성 하고이 특정 문제를 포착하는 테스트 사례를 구현할 것을 강력히 제안합니다. 이를 통해 실패를 더 쉽게 재현 할 수 있으며 문제를 입증 할 수있는 최소한의 테스트 케이스를 생성하는 것이 종종 매우 유익합니다. 또한 (완전 자동) 테스트 케이스가 있으면 다른 사람에게 도움을 요청하는 것이 더 쉽습니다.

당신이 정말로해야 할 일은 문제를 더 자세히 설명하는 것입니다. "작동하지 않는 이유"가 100 가지가있을 수 있습니다.

당신은 어떤 데이터를 얻고 있습니까?

몇 바이트 만 보내십시오.

아무것도 통과하지 못하면 Wireshark를 사용해보십시오. Vista는 데이터를 보내고 있습니까?

XP가 그것을 받고 있습니까?

여기에는 마법이 없으며 데이터 경로를 처음부터 끝까지 확인해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top