sendto() 向廣播地址發包返回errno 13, Permission denied錯誤


http://blog.csdn.net/guanghua2_0beta/article/details/52483916

sendto() 向廣播地址發包返回errno 13, Permission denied錯誤

 

sendto()向廣播地址發包返回errno 13, Permission denied錯誤

原因:
沒有設置socket的SO_BROADCAST屬性。特別注意:SO_BROADCAST屬性要單獨設置,一般習慣setsockopt時同時設置多個屬性,例如SO_BROADCAST|SO_REUSEADDR,雖然大部分情況下工作正常,但工作中還是遇到了同時設置不起作用的問題;
 
int ret;
int optval = 1;    
ret = setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &optval,sizeof(int));
if(ret!=0)
{
    printf("setsockopt SO_BROADCAST error:%d, %s\n", errno, strerror(errno));
    close(sockfd);
    return -1;
}
ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval,sizeof(int));
if(ret!=0)
{
    close(sockfd);
    return -1;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM