2013-05-13 4 views
1

문제가 발생했습니다. 내 최신 요구 사항에 따르면, 나는 ftp 또는 sftp 서버에 파일을 업로드해야합니다. 문제는 서버가 ftp 또는 sftp라는 것을 모른다는 것입니다. 런타임 클라이언트에서 파일을 업로드해야하는 서버의 IP 및 기타 세부 정보를 제공합니다. 그래서, 런타임에 나는 서버가 ftp 또는 sftp라는 것을 알아야하고 그에 따라 행동 할 필요가있다. 그래서, 이것에 어떤 방법이 있습니까?ftp 및 sftp에 파일 업로드

+0

ftp 및 sftp 클라이언트를 가져오고, 연결을 시도하고 진행 상황을 확인 하시겠습니까? 로켓트 과학이 아닙니다 ... 현관 (ftp)이 잠겨 있다면 돌아와서 sftp를 시도하십시오. –

+0

이 문제를 조사 할 때, 실제로'sftp'인지 그리고'ftps' 나'ftp over ssh'인지 확인하십시오. – BLuFeNiX

답변

2

SFTP (SSH 파일 전송 프로토콜)는 기본적으로 포트 22를 사용합니다.

어떤 사람들은 "SFTP"를 사용하여 FTPS (FTP-over-TLS)를 나타냅니다. 이 경우에는 명시 적 TLS와 암시 적 TLS의 두 가지 옵션이 있습니다. 암시 적 TLS는 기본적으로 포트 990을 사용합니다. 명시 적 모드에서 클라이언트는 기본적으로 포트 21에 연결 한 다음 기존 연결에 대해 TLS 핸드 셰이크를 시작하도록 서버에 지시합니다.

일반 FTP 지금

포트 21을 사용하여, 사용자가 명시 적으로 사용하려면 어떤 프로토콜을 지정할 수 있습니다.

마지막으로 소켓에서 데이터의 첫 번째 줄을 잡고 연결하려고 시도 할 수 있습니다. FTP/FTPS에서 첫 번째 줄은 220SP로 시작해야합니다 (SP는 공백을 나타내며 0x20 문자가있는 문자). 다른 응답 코드도 제공 할 수 있습니다. SSH/SFTP에서는 "SSH-2.0-"으로 시작합니다.

+0

ftp에서 FTP 또는 SFTP를 식별 할 수있는 방법이 있으며 sftp는 다른 포트 (각각 21 및 22)를 사용합니다. 이것은 "서버의 IP 및 기타 세부 사항"의 일부 여야합니다. 그래서, 거기에서 코드를 얻는 방법? 예를 들어 주시겠습니까? – Souvik

+0

@Souvik 나는 당신의 질문을 이해하고 있는지 확신하지 못합니다. 어떤 코드를 어디에서 얻고 싶습니까? –

+0

내 클라이언트는 런타임시 사용자 이름과 암호 만 FTP (포트 21이 아니라면 21)가 아닌 IP를 제공하지만 서버에 대한 정보는 ftp 또는 sftp가 아닙니다. 내가 서버에 연결하고 서버가 FTP 서버 또는 SFT 하나인지 식별해야합니다. 그래서, 어떤 프로그래머가 그걸 식별하는 자바와 함께 쓸 수 있습니다. – Souvik

0

ftp와 sftp는 각각 다른 포트 (21과 22)를 사용합니다. 이것은 "서버의 IP 및 기타 세부 사항"의 일부 여야합니다.

+0

내 programm은 서버에 따라 포트를 결정합니다. 그래서 서버 – Souvik