환경 : 윈도우 소켓 / c++ / vs 2005
소켓 프로그래밍을 할 때 client는 bind 해주지 않으면 자동으로 os로부터 source port를 할당받게 되잖아요?
그 때 포트 몇개를 제외하고 할당 받는 방법이 있을까요?
bind를 명시적으로 사용해서 지정하는건 해결책이 안될 것 같습니다. 많은 연결이 필요한 프로그램이라서..
그리고 방화벽으로 포트 사용을 막거나, 다른프로그램으로 사용하지 않을 포트를 선점하는 것도 안될 것 같습니다.
상황 :
한 호스트에서 2가지 프로그램이 돌고 있습니다.
프로그램 1 : 간헐적으로 2000번 포트를 열어서(리슨) 외부의 메세지 인입을 받음 (서버 역할)
프로그램 2 : 요청이 있을 때 마다 새로운 connection을 외부 서버에 생성.
프로그램 1은 간헐적으로 2000번 포트를 사용하다 보니 2000번 포트가 사용이 안되는 순간이 있는데,
이때 프로그램 2가 2000번 포트를 소스포트로 사용하는 경우가 생기면서 프로그램1이 포트를 열려고 할 때 충돌되는 현상이 있습니다.