2015-01-13 9 views
0

USB를 통해 Android 장치와 Windows 호스트 컴퓨터간에 TCP/IP 소켓 연결을 설정했습니다. 연결에 사용되는 포트는 8000/8001입니다. 이 통신 모드는 Windows 7 및 기타 생태계에서 매우 잘 작동하지만 Windows XP 32 비트에서는 "recv"API가 무기한 중지됩니다.Windows XP에서 소켓 recv가 멈춤

서버와 클라이언트가 Windows XP 호스트에서 실행되는 샘플 프로그램을 작성했지만 제대로 작동하지만 USB가 관련되어있을 때 문제가 발생합니다. 스니퍼 도구 "USB 분석기"도구를 사용하여 장치에서 오는 데이터를 스니핑하고 데이터가 장치로 들어오는 것을 봅니다. 그러나 어떻게 든 recv API는이를 캡처 할 수 없습니다. http://www.tenouk.com/Winsock/Winsock2example9.html

감사합니다,

편집 얼간이 :이 문제는 Windows XP 32 비트에서가 아니라 64 비트에서 발생 내가 사용하고

코드는 아래 링크에 존재한다.

Edit2 :이 해킹을 발견했습니다. 연결이 설정되면 바로 서버에서 더미 데이터를 보내고 클라이언트가이를 캡처합니다. 이 작업이 완료되면 recv는 더 이상 멈추지 않습니다. 이것이 왜 필요한지에 대한 단서가 있습니까?

+0

TCP 소켓 또는 UDP 소켓 중 어느 것을 사용하고 있습니까? – EJP

+0

TCP 소켓을 사용하고 있습니다. 나는 또한 recv가 잘 동작하기 전에 약간의 지연을 추가하는 것을 발견했다. – nerd

+0

비 차단 모드에 있지 않는 한, 약간의 차이를 만들어서는 안됩니다.이 경우, 잠자기 대신'select()'를 사용해야합니다. – EJP

답변

0

recv가이 문제를 해결하기 전에 약간의 지연 (100ms)을 추가하십시오. 그러나 나는 이것이 왜 일어날 지에 대한 정확한 이유를 모른다.

관련 문제