[ 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 |