.NET Поддержка FtpWebRequest, и Неявная (FTPS) и явный (FTPES)?

Мое решение. Строка должна быть изменяемой. Преимущество выше некоторых из других решений, что это перемещает часть непространства в начало, таким образом, можно продолжать использовать старый указатель, в случае, если необходимо освободить () его позже.

void trim(char * s) {
    char * p = s;
    int l = strlen(p);

    while(isspace(p[l - 1])) p[--l] = 0;
    while(* p && isspace(* p)) ++p, --l;

    memmove(s, p, l + 1);
}   

Эта версия создает копию строки с strndup () вместо того, чтобы редактировать его на месте. strndup () требует _GNU_SOURCE, поэтому возможно, необходимо сделать собственный strndup () с malloc () и strncpy ().

char * trim(char * s) {
    int l = strlen(s);

    while(isspace(s[l - 1])) --l;
    while(* s && isspace(* s)) ++s, --l;

    return strndup(s, l);
}
27
задан Martin Prikryl 16 January 2017 в 15:54
поделиться

3 ответа

насколько мне известно, текущая (.NET 2.0 и 3.5) версия FtpWebRequest поддерживает только явный SSL.

На самом деле, .NET 2.0 в настоящее время не поддержка неявного SSL, только явного. Мы рассмотрим добавление этого для будущая версия.

JonCole - MSFTModerator на Сообщение на форуме MSDN

Если вам нужно использовать как неявный, так и явный TLS / SSL, вы должны попробовать один из сторонних компонентов FTP / SSL. Следующий код использует наш Rebex FTP / SSL и взят из учебной страницы .

Явный TLS / SSL

Клиент подключается к FTP-серверу обычным незащищенным способом , обычно порт 21 был назначен протоколу FTP. Когда желательно защитить соединение с помощью SSL, инициализируется согласование SSL, контрольное соединение защищено, и все последующие коммуникации защищаются.

// Create an instance of the Ftp class. 
Ftp ftp = new Ftp();

// Connect securely using explicit SSL. 
// Use the third argument to specify additional SSL parameters. 
ftp.Connect(hostname, 21, null, FtpSecurity.Explicit);

// Connection is protected now, we can log in safely. 
ftp.Login(username, password);

Явная защита означает, что можно защитить соединение в любой момент. Если вы не знаете, нужна ли вам защита не во время подключения, возможно, вы захотите подключиться с помощью обычного незашифрованного протокола FTP и защитить соединение позже.

Ftp ftp = new Ftp();

// Connect to the server with no protection. 
ftp.Connect(hostname, 21);

// Upgrade connection to SSL. 
// This method also accepts an argument to specify SSL parameters. 
ftp.Secure();

// Connection is protected now, we can log in safely. 
ftp.Login(username, password);

Неявная защита SSL сеанса FTP

Протокол FTPS изначально был назначен отдельным портом IANA. При подключении к этому порту немедленно начинается согласование SSL, и управляющее соединение защищается. Таким же образом неявно защищены все подключения к данным. Это похоже на подход, используемый HTTPS.

Этот подход не одобряется IETF и считается устаревшим. Он поддерживается Rebex FTP / SSL для взаимодействия со старыми серверами, но настоятельно рекомендуется по возможности использовать явную защиту.

Ftp ftp = new Ftp();

// Connect securely using implicit SSL. 
// Use the third argument to specify additional SSL parameters. 
ftp.Connect(hostname, 990, null, FtpSecurity.Implicit);

// Connection is protected now, we can log in safely. 
ftp.Login(username, password);

Вы можете загрузить компонент по адресу rebex.net/ftp-ssl. net /

17
ответ дан 28 November 2019 в 05:34
поделиться

Ранее я использовал Alex FTPS Client. Возможно, вам стоит посмотреть http://ftps.codeplex.com/

13
ответ дан 28 November 2019 в 05:34
поделиться

edtFTPnet / PRO - это клиентская библиотека FTP, которая также поддерживает неявные и явные режимы FTPS. Это просто вопрос указания правильного протокола:

 SecureFTPConnection conn = new SecureFTPConnection();
 conn.Protocol = FileTransferProtocol.FTPSImplicit;

 // set remote host, user, pwd etc ...

 // now connect
 conn.Connect();

Тот же компонент также поддерживает SFTP.

И да, я являюсь одним из разработчиков этого компонента (и edtFTPnet , бесплатного FTP-клиента .NET с открытым исходным кодом).

0
ответ дан 28 November 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: