htons(0) 을 이용해서 정한 랜덤 포트번호는 언제 결정되는 건가
글쓴이: jagalchee / 작성시간: 일, 2004/05/30 - 3:06오후
랜덤 포트 번호를 생성할 때, htons(0) 을 사용하면 되는 것으로 알고 있습니다.
그런데 제가 궁금한것은 랜덤 포트가 어느 시점에서 결정되는 건지가 궁금합니다.
아래의 3가지 경우중 어느 시점에 랜덤 포트가 결정되는지요? 그리고 확인 할 수 있는 방법은 없나요?
1) a.sin_port = htons(0); 한 후에 바로 포트 번호가 결정된다.
2) socket(); 한 후에 바로 포트 번호가 결정된다.
3) bind(); 한 후에 바로 포트 번호가 결정된다.
당근 3) 번 이후엔 반드시 결정되어야 하는 건 확실하지만, 그 전에 정해져 있는지가 궁금합니다.
랜덤 포트가 아니라, 직접 포트 번호를 설정하는 경우는 당근 1) 이 후에 되겠지요. 그래서, 1) 을 한에, printf("%d\n", ntohs(a.sin_port)); 를 해봤더니
0 이 출력되네요. 그래서 뭔가 이상하다 싶어서 질문 드립니다.
아시는 분 꼭 답변 부탁드릴께요.
Forums:
define ___constant_swab16(x) \
define ___constant_swab16(x) \
((__u16)( \
(((__u16)(x) & (__u16)0x00ffU) << 8) | \
(((__u16)(x) & (__u16)0xff00U) >> 8) ))
이게 htons 니 이건 확실히 아니죠?
힘내세요.
무슨 말인지 잘 모르겟어요. ^^;
무지한 초보라..무슨 말씀인지 말 모르겟어요.
설명 부탁드려요~.
소스찾아보세요. 소켓이나 BIND 에서 하겠죠 뭐..
소스찾아보세요. 소켓이나 BIND 에서 하겠죠 뭐..
힘내세요.
bind시 결정됩니다.bind할때 인자로 address가 들어가는
bind시 결정됩니다.
bind할때 인자로 address가 들어가는데 여기서 0을 port로 지정하면 자동으로 포트 할당이 됩니다.
bind에 들어가는 address에 따라서 어떤식으로 동작되는 지는 Stevens의 Unix ntework programming에 보시면 자세히 나와있습니다.
댓글 달기