1
Delphi TServerSocket 구성 요소를 바인딩하여 특정 로컬 주소에서만 요청을 수락 할 수있는 방법을 알고 있습니까?TServerSocket을 특정 IP 주소에 바인딩하는 방법
서버에는 여러 개의 IP가 있지만 서버 응용 프로그램이 실행될 때 한 IP에서만 요청을 수락해야합니다.
Delphi TServerSocket 구성 요소를 바인딩하여 특정 로컬 주소에서만 요청을 수락 할 수있는 방법을 알고 있습니까?TServerSocket을 특정 IP 주소에 바인딩하는 방법
서버에는 여러 개의 IP가 있지만 서버 응용 프로그램이 실행될 때 한 IP에서만 요청을 수락해야합니다.
TServerSocket
은 사용자가 요구하는 기능을 직접 노출하지 않지만 약간의 해결 방법으로 해결할 수 있습니다.
보호 된 TAbstractSocket.Address
속성에 액세스하려면 TServerSocket
에서 새 클래스를 파생해야합니다. 이것이 TServerSocket
이 바인딩하는 값입니다. 이 속성은 일반적으로 액세스 할 수 없기 때문에 빈 문자열로 유지되며 0.0.0.0
(예 : INADDR_ANY
, 즉 모든 로컬 IP)에 바인딩하는 것과 같습니다.
속성에 액세스 할 수있게되면 서버를 활성화하기 전에 원하는 IP로 설정하면 서버가 그에 따라 바인딩됩니다. 예를 들어
: 많은 레미
type
TServerSocketAccess = class(TServerSocket)
end;
TServerSocketAccess(ServerSocket1).Address := '192.168.0.1';
ServerSocket1.Active := True;
감사합니다. 이 코드는 서버 소켓 주소 값을 성공적으로 업데이트하고 있습니다. 그러나 서버 응용 프로그램은 주소 속성이 명시 적으로 IP로 설정된 후에도 다른 모든 IP 주소에 계속 응답합니다. 왜 그런지 알고 있니? 델파이 소켓 제한입니까? – LastManStanding
@LastManStanding ** 서버가 활성화 된 시점에 ** 주소가 비어있는 경우에만 설명하는 내용이 ** 발생할 수 있습니다. 청취 소켓은 설정된 IP에 바인딩되며 해당 IP의 연결 만 수락 할 수 있습니다. 빈'Address '에 바인딩하면 모든 IP에서 연결이 가능합니다. 'Active'를 true로 설정하기 전에'Address'를 설정해야합니다. –