bind - EACCES
글쓴이: purewell / 작성시간: 금, 2003/12/12 - 11:34오전
bind에서 오류가 납니다.
port:7020
backlog:15
ip:0.0.0.0
위와 같이 해서 bind을 하였는데 ㅡo-) errno가 EACCES로 세팅됩니다.
(물론 bind의 리턴값이 -1 이고요)
man page에는...
Quote:
EACCES The address is protected, and the user is not the super-user.
주소가 보호되어 있다고 나오는데 무슨 말인지 모르겠습니다.
(0.0.0.0은 INADDRANY던가? 그 녀석 아닌가요?)
root 권한으로 프로그램을 실행하면 오류가 나진 않지만...
ㅡo-)a 긁적긁적...
bool SocketBind(SOCK_HANDLE hSocket, int nPort, const char* szIP, SOCK_IP_TYPE nIPVer) { int nRet; if (nIPVer == SOCK_IP4) { SOCK_ADDRIN sa; memset(&sa, 0x00, sizeof(sa)); sa.sin_family=AF_INET; sa.sin_port = htons(nPort); StringToAddress((SOCK_ADDR&)sa, szIP, nIPVer); nRet = bind(hSocket, (SOCK_ADDR*)&sa, sizeof(sa)); if ( nRet == -1) { switch(errno) { case EBADF: printf("EBADF");break; case EINVAL:printf("EINVAL");break; case EACCES:printf("EACCES");break; case ENOTSOCK:printf("ENOTSOCK");break; case EROFS:printf("EROFS");break; case EFAULT:printf("EFAULT");break; case ENAMETOOLONG:printf("ENAMETOOLONG");break; case ENOENT:printf("ENOENT");break; case ENOMEM:printf("ENOMEM");break; case ENOTDIR:printf("ENOTDIR");break; case ELOOP:printf("ELOOP");break; } } } return SOCK_SUCCESS(nRet); }
Forums:
^ o^);; 실수로 Port가 15번이 되어버렸습니다.Port가
^ o^);; 실수로 Port가 15번이 되어버렸습니다.
Port가 1024 이내 포트는 UN*X/Linux에서
Super user 이상만이 열 수 있도록 하더군요.
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
댓글 달기