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,雖然大部分情況下工作正常,但工作中還是遇到了同時設置不起作用的問題;
沒有設置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; }