client ip 가져오기...

글쓴이: 익명 사용자 / 작성시간: 금, 2001/12/14 - 10:48오전
안녕하세요...
server에 접속한 client의 ip와 port번호를 알고자 합니다.
그래서 server쪽 소스에
connfd = accept(listenfd, &cli_addr, &len);
printf("ip %s, port %d\n",
inet_ntoa(cli_addr.sin_addr),
ntohs(cli_addr.sin_port));
와 같이 하여 실행을 하면 리눅스 서버에서는 실행이 잘되는데
unix에서는 ip가 0.0.0.0으로 나옵니다.
왜 이런가요?
Forums:
Re: client ip 가져오기...
# fd=는 연결된 socket Desc이고요.
# addr.sin_addr.s_addr는 OS에 따라서 조금은 다르더군요.
int GetConnectIPA(int fd, unsigned int *ip, unsigned short int *port)
{
int addrlen = sizeof(struct sockaddr);
struct sockaddr_in addr;
if(getpeername(fd, (struct sockaddr *)&addr, &addrlen) < 0) {
printf("Inet getpeername error = [%d]\n", errno);
return(-1);
}
*ip = addr.sin_addr.s_addr;
*port = ntohs(ptr->sin_port);
}
댓글 달기