[완료] accept/connect시에 포트 번호에 대해서...
글쓴이: mg2000 / 작성시간: 수, 2008/11/05 - 9:17오전
제가 서버/클라이언트 프로그래밍을 공부중인데요.
sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.s_addr = htonl(INADDR_ANY); service.sin_port = htons(55555);
위와 같이 55555번 포트를 통해서 클라이언트 접속을 받도록 설정을 했습니다.
struct sockaddr_in clientAddress; socklen_t addressLength = sizeof(clientAddress); socket AcceptSocket = accept(param.acceptSocket, (struct sockaddr *)&clientAddress, &addressLength);
그 다음 위와 같이 클라이언트 접속을 기다리는데요.
클라이언트 접속을 받아들이면, clientAddress에 클라이언트의 IP와 포트번호가 들어오는데,
IP는 클라이언트의 IP가 맞습니다만, 포트는 제가 설정한 55555번이 아닌 다른 번호가 들어있더라고요.
제가 설정한 포트가 55555번이니 무조건 이 번호가 나와야 하는 것 아닌가요?
이거 제가 잘못 알고 있는 것인지 궁금하네요.
Forums:
accept/connect시에 포트 번호에 대해서...
네.. 잘못 알고 있으시네요
[서버] (55555) <---> (클라이언트포트) [클라이언트]
이런 구조로 접속이 되는되 서버에서 지정된 포트는 서버쪽에서만 해당되는 것이고 클라이언트쪽은 클라이언트쪽 OS에서 임의로 할당받은 포트가 지정됩니다.
mg2000님이 지금 생각하시는 대로라면 웹으로 접속할땐 클라이언트 포트가 80이 되어야 하는데 그렇다면 웹페이지를 1개 밖에 접속 못하는 사태가 발생하죠. (일반적으로 클라이언트 포트는 공유해서 쓸수 없으므로...)
netstat 하셔서 웹으로 접속한 서버/클라이언트 포트 확인해 보시면 이해가 되실듯...
아하! 그렇군요.
이제야 감 잡았습니다.
답변 감사드립니다.
댓글 달기