일부 서비스 검색에 mdnsreponder를 사용하는 하나의 클라이언트 응용 프로그램을 작성했습니다. 클라이언트 IP가 매우 자주 변경된다는 요구 사항이 있습니다. IP에 변경이있을 때마다 다시 발견해야합니다. 그래서 1 분마다 IP를 변경하고 검색을 수행하는 간단한 테스트 응용 프로그램을 작성했습니다.소켓 sendto는 udp 패킷 중에 오류 22를 얻습니다.
모든 것이 잘 작동하지만 몇 가지 IP 변경 (일부 7-10 시간 변경) 후에 소켓 오류가 발생합니다.
내 요청이 새로운 IP와의 인터페이스에 넣어하지 않습니다 후
mdnsplatformsend udp got error 22 .
(아래에는 mDNSResponder 코드 sendto를 소켓 함수의 오류 코드입니다).
다시 내가 만 작동, 내 응용 프로그램을 다시 시작해야합니다 ...
이누군가가 문제를 파악하는 데 도움이 수, 이유는 몇 가지 실험 후 중지합니까?
errno == 22는 EINVAL (잘못된 인수)입니다. 잘못된 매개 변수를 sendto 함수에 전달 중입니다. 소켓이 INADDR_ANY (0) 또는 특정 어댑터에 바인딩되어 있는지 표시하지 않습니다. 귀하의 코드를 보여주십시오. – selbie
전달 된 매개 변수의 정의와 초기화에서'sendto()'를 어떻게 호출하는지 보여주지 않으므로, 우리는 추측 할 수밖에 없습니다. 내 첫 번째 추측은 잘못된 소켓 설명자를 전달하는 것입니다. – alk