internet

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ internet ] in KIDS
글 쓴 이(By): Porce (이지웅)
날 짜 (Date): 2001년 2월 23일 금요일 오전 11시 01분 55초
제 목(Title): [Q] Socket 포트 동적 할당



Server 포트가 5000번부터 5010번까지 중에 하나를 잡는다고 할때요
Client 는 포트 스캐닝을 하기 전에는 Server 의 억세스 포트가 뭔지
모릅니다. 그래서 포트 스캐닝을 하는 가장 단순하게 생기고 (사실
이거 외에는 잘 모르는) 방법을 다음과 같이 생각했습니다.

    int i=0;  
    while(i<=10){
        //close(ServerSocket);
        ServerAddr.sin_port = htons(5000+i);
        temp=connect(ServerSocket,(struct sockaddr *)&ServerAddr,\
                     sizeof(struct sockaddr));
        if (temp!=-1) {
                break;
        }
        i++;
    }

그런데 문제는 이 코드가 안돌아간다는 겁니다. Server 포트가 5000번
인 경우(즉 최초에 connect를 시도한 경우)는 성공적으로 연결이 
되는데요, 만일 서버 포트가  5001번-5010번까지로 할당 되어 있다면
항상 실패합니다. temp 값이 항상 -1로 찍히죠.

portscan 의 코드는 아직 보지는 않았는데요. 제 코드에서 원인을
알고 싶습니다.  왜 안되는 것일까요.

글구 - //close(ServerSocket); 을 comment out 하는 것과 comment in
하는 것의 차이를 아시나요 ? comment in 하는 경우는 5000번 포트도
연결이 안되더군요.

친절하신 답변을 기다리겠습니다..

감사합니다.

포스.

Crossposted to QandA.@ARA

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.