2011-09-21 2 views
1

브로드 캐스트 메시지를 보내려는 UDP 소켓 (centos 6)을 만듭니다.setsockopt는 errno = 2를 반환합니다.

int val = 1; 
     if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) < 1){ 
      debug("setsockoopt failed with errno: %d, socket %d", errno, a); 
     } 

은 setsockopt는 xxx255 호스트에 UDP 패킷을 전송 = 2 Communictaion 작동 값, 메신저 errno를 설정하고, 내 모든 애플 리케이션 : (..) 소켓을 값 = 25을 반환하지만 - 모든 소켓을 생성하는 작업, 작업 그것을 recives하지만 메신저는 errno는이 성공적으로 완료되면, 값 0이 반환됩니다 (errno를 = 2 = 그런 파일이나 디렉토리)

안부

+0

OS/버전에 대해 구체적으로 설명해야합니다. – fche

+0

try char val = '1'및 sizeof (char) 이것은 beej가 말한 것입니다. http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#broadcast says : '// char broadcast = '1'; // 그것이 작동하지 않으면, 이것을 시도하십시오 ' –

답변

4

을 오지 곳에서 궁금; 그렇지 않으면 값 -1이 반환되고 전역 변수 errno는 오류를 나타내도록 설정됩니다.

setsockopt manpage의 내용은 성공시 0을 반환하므로 잘못된 조건 일뿐입니다. 에러가 없다면, errno의 값은 중요하지 않습니다. 그래서 여기에서 여러분은 다소 모호한 값을 얻습니다.

if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) != 0){ 

입니다.

관련 문제