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
댓글 달기