2017-03-16 5 views
1

필자가 작성중인 로컬 프록시 (예 : 데이터베이스 호출)의 IP 주소를 변경하기 위해 호스트 파일을 수정하려고합니다.리디렉션 된 소켓 열기 요청의 의도 된 IP를 결정하는 POSIX 호출은 무엇입니까?

10.1.2.3 localhost 
10.1.2.4 localhost 

소켓 열기 요청이 의도 한 시스템을 해결하기 위해 소켓에서 수신 대기중인 프록시를 원합니다. 예를 들어 제 의뢰인이 전화하고 있습니다.

dbPort = 4000; 
openDatabaseConnection("10.1.2.3", dbPort); 
... 
openDatabaseConnection("10.1.2.4", dbPort); 

두 소켓 모두 동일한 소켓에서 호출됩니다. 내 프록시 서버가 4000에서 수신 대기하고 올바른 서버로 10.1.2.3으로가는 리디렉션을 IP 주소로 보내려고합니다.

소켓 헤더에서 이것을 얻으려면 POSIX 호출이 있습니까?

내 질문 : 리디렉션 된 소켓 열기 요청의 의도 된 IP를 결정하는 POSIX 호출은 무엇입니까?

답변

0

아니요 클라이언트 프로그램에서 사용 된 IP 주소를 알 수있는 방법이 없습니다. 호스트 파일은 별칭 집합을 정의하며 별칭은 이름/주소 확인자가 실제 주소 (귀하의 경우 localhost)로 대체되므로 사용 된 별칭에 대한 모든 정보가 손실됩니다. "리다이렉션"이 없으며 클라이언트가 연결되기 전에 별칭 대체가 수행됩니다.

문제를 해결하는 가장 간단한 방법은 hosts 파일을 통해 IP 주소 별칭을 사용하는 것이 아니라 다른 포트 번호를 사용하는 것입니다.

다른 주소에 대해 "가상"인터페이스를 추가하고 프록시 서버가 두 인터페이스 모두에서 연결을 수신하도록 할 수 있습니다.