질문 : bind에 관한 질문입니다.

익명 사용자의 이미지

안녕하세요?

tcp로 임의포트를 바인드하고 netstat를 해보면,

지정한 포트와는 다른 포트가 열려져있는걸 볼수있던데요.

어디선가 포트를 바꾸는건가요?

예를 들어 23456 이라고 바인드하면 41051이라는 포트가 열려있습니다.

사용하는 환경은 슬랙웨어 8.1 커널 2.5.17입니다.

왜 이런지 알려주세요.

익명 사용자의 이미지

서버 프로그램인가요?

아마 클라이언트 프로그램 같은데...

해당 포트는 OS가 알아서 Active_map에 채워줍니다.

또한 서버 프로그램일 경우에는 Passive_map에는 님이

정해놓으신 포트가 Active_map에는 클라이언트의

접속된 포트번호가 채워지는 겁니다.

익명 사용자의 이미지

어떻게 이런일이 있을수 있나요?

익명 사용자의 이미지

음 대당 부분의 소스를 좀 볼 수 있을까요?

익명 사용자의 이미지

혹시 serverAddress.sin_port = 23456;

이런식으로 하신건 아닌지요?, 서버에서 포트를 바인드 하기위해서는

htons 라는 함수를 통해서 네트웍 오더로 변경해야만 합니다.

serverAddress.sin_port = htons( 23456 );

그럼 고운 하루되시길...

ps. 23456 이 41051 이 맞군요... htons 를 안쓰신듯 하네요

샤랄라 wrote..
안녕하세요?

tcp로 임의포트를 바인드하고 netstat를 해보면,

지정한 포트와는 다른 포트가 열려져있는걸 볼수있던데요.

어디선가 포트를 바꾸는건가요?

예를 들어 23456 이라고 바인드하면 41051이라는 포트가 열려있습니다.

사용하는 환경은 슬랙웨어 8.1 커널 2.5.17입니다.

왜 이런지 알려주세요.

익명 사용자의 이미지

안녕하세요?

답변 정말 감사드립니다.

atol( argv[ ... ] );

이렇게만 써줬는데, 여기서 htos( atol (... ) )

이렇게 해줘야만 하는건가보군요. 참고하겠습니다.

그리고 정말 감사합니다.