Вы можете поместить некоторые инструкции Java в цикл для инициализации коллекции:
List characters = new ArrayList() {
{
for (char c = 'A'; c <= 'E'; c++) add(c);
}
};
Random rnd = new Random();
List integers = new ArrayList() {
{
while (size() < 10) add(rnd.nextInt(1_000_000));
}
};
Одно решение состоит в том, чтобы попробовать реализацию Mono FtpWebRequest. Я взглянул на его исходный код, и кажется, что будет легко изменить так, чтобы все соединения (управление и данные) были туннелированы через Прокси HTTP.
Вы устанавливаете соединение TCP к своему Прокси HTTP вместо фактического FTP-сервера. Затем Вы отправляете CONNECT myserver:21 HTTP/1.0
сопровождаемый двумя CRLFs (CRLF = \r\n). Если прокси нужна аутентификация, необходимо использовать HTTP/1.1 и также отправить заголовок аутентификации прокси с учетными данными. Затем необходимо считать первую строку ответа. Если это запускается с" HTTP/1.0 200
" или" HTTP/1.1 200
", затем (остальная часть кода) можно продолжить использовать соединение, как будто это подключено непосредственно к FTP-серверу.
большинство прокси FTP делает свою вещь на соединении, поэтому если у Вас не было прокси, Вы делаете это:
с помощью прокси FTP, Вы делаете:
и это просто работают он из там. Я использую это ПРАВО В ЭТУ СЕКУНДУ (пытающийся отладить что-то) через прокси сквида.
..., но поскольку у Вас нет прокси FTP....
у Вас есть прокси SOCKS? Это могло бы работать, но я не знаю, может ли.NET сделать это. Иначе, честно говоря, я думаю, что Вы застреваете! FTP является "нечетным" протоколом, по сравнению с HTTP, поскольку он имеет канал управления (порт 21), и канал передачи данных (или больше чем один, на случайном порте), таким образом идя через прокси является.... забавой по меньшей мере!
В активном режиме FTP сервер инициирует передачу данных клиенту. Если клиент будет позади Прокси HTTP, то это, очевидно, не будет работать. В пассивном режиме FTP это - клиент, который инициирует и начальную букву и соединения данных. Так как Прокси HTTP могут туннелировать произвольные исходящие соединения TCP (использующий метод ПОДКЛЮЧЕНИЯ), должно быть возможно получить доступ к FTP-серверу в пассивном режиме через Прокси HTTP.
Эти FtpWebRequest
, кажется, поддерживает пассивный режим. Однако я не понимаю, почему загрузка файла и списки каталогов поддерживаются, тогда как загрузка файла, которая также использует ту же передачу данных, не.
Вы подтвердили, что FtpWebRequest
настроенный для пассивного режима не работает через Прокси HTTP, через которого каталог загрузка listings/file работают просто великолепно?
Идентификатор действительно не видит соединение между прокси HTTP и загружающий на FTP-сервер. Если Вы используете класс прокси HTTP, это - для доступа http канавка ресурсов прокси HTTP. ftp является другим протоколом, и прокси ftp используют другой протокол.
Если существует способ для Вас загрузить файл через FTP без C# затем, это должно также быть возможно в C#. Загрузка через браузер или работу с клиентами FTP?
одна библиотека FTP мне нравится большинство, библиотека FTP Client.NET .
Как Alexander говорит, Прокси HTTP могут проксировать произвольный трафик. То, в чем Вы нуждаетесь, является Клиентом FTP, который имеет поддержку использования Прокси HTTP. Alexander также корректен, что это только работало бы в пассивном режиме.
Мой работодатель продает такой клиент FTP, но это - инструмент уровня предприятия, который только стал частью очень большой системы.
я уверен, что существуют другие, доступные, который лучше соответствовал бы Вашим потребностям.
Наш Rebex FTP / SSL может использовать HTTP-прокси. Но это не бесплатно ...
// initialize FTP client
Ftp client = new Ftp();
// setup proxy details
client.Proxy.ProxyType = FtpProxyType.HttpConnect;
client.Proxy.Host = proxyHostname;
client.Proxy.Port = proxyPort;
// add proxy username and password when needed
client.Proxy.UserName = proxyUsername;
client.Proxy.Password = proxyPassword;
// connect, login
client.Connect(hostname, port);
client.Login(username, password);
// do some work
// ...
// disconnect
client.Disconnect();
У меня была такая же проблема.
Моей основной целью было загрузить файл на ftp. И меня не заботило, будет ли мой трафик проходить через прокси или нет.
Итак, я просто установил для свойства FTPWebRequest.Proxy значение null сразу после FTPWebRequest.Create (uri).
И это сработало. Да, я знаю, что это не самое лучшее решение. И более того, я не понимаю, почему это сработало. Но цель все равно достигнута.