FTP-клиенты .NET framework (FtpWebRequest
или WebClient
) не могут подключиться с использованием прокси SOCKS, поддерживаются только HTTP [только скачивание] и прокси-серверы ISA :
Класс FtpWebRequest поддерживает прокси-серверы HTTP и ISA Firewall Client.
Если указанный прокси-сервер является прокси-сервером HTTP, поддерживаются только команды DownloadFile, ListDirectory и ListDirectoryDetails.
blockquote >Итак, вам нужно использовать стороннюю библиотеку FTP.
Например, с помощью сборки WinSCP .NET вы можете использовать:
// Setup session options SessionOptions sessionOptions = new SessionOptions { Protocol = Protocol.Ftp, HostName = "example.com", UserName = "user", Password = "mypassword", }; // Configure proxy sessionOptions.AddRawSettings("ProxyMethod", "2"); // SOCKS5 proxy sessionOptions.AddRawSettings("ProxyHost", "proxy"); using (Session session = new Session()) { // Connect session.Open(sessionOptions); // Your code }
Для параметров для
SessionOptions.AddRawSettings
см. исходные настройки .Легче, чтобы WinSCP GUI генерировал C # FTP код шаблона для вас.
Обратите внимание, что сборка WinSCP .NET не является родной библиотекой .NET. Это довольно тонкая оболочка .NET поверх консольного приложения.
(я автор WinSCP)
Результат деления на ноль, математически говоря, неопределен, который может быть выражен с помощью float / double (поскольку NaN
- а не число), однако он не является неправильным в любом фундаментальном смысле.
Поскольку целое число должно содержать определенное числовое значение, при обработке с ним необходимо обнулить ошибку при делении на ноль.
Типы Java float
и double
, например, практически любой другой язык (и почти любой аппаратный модуль FP), реализуют стандарт IEEE 754 для математики с плавающей запятой, который предусматривает деление на ноль, чтобы вернуть особое значение «бесконечности».
Целочисленная арифметика (реализована как представление двух дополнений Java и большинства других языков и аппаратных средств) отличается и не имеет специальных значений бесконечности или NaN , поэтому бросание исключений - полезное поведение там.
float
и double
не вызывают исключения. Благодарю.
– Cengiz Can
21 October 2011 в 10:25
Способ сохранения двойника сильно отличается от int. См. http://firstclassthoughts.co.uk/java/traps/java_double_traps.html для более подробного объяснения того, как Java обрабатывает двойные вычисления. Вы также должны прочитать цифры чисел с плавающей запятой, в частности понятие Not a Number (NaN) .
Если вам интересно узнать больше о представлении с плавающей запятой, я бы посоветовал прочитать этот документ (формат Word, извините). Он вникает в двоичное представление чисел, что может быть полезно для вашего понимания.
При делении на ноль (0 или 0.00)
public static void main(String [] args){ double a=10.00; System.out.println(a/0); }
Консоль: Infinity
public static void main(String [] args){
int a=10;
System.out.println(a/0);
}
Консоль: Exception in thread "main" java.lang.ArithmeticException: / by zero
public static void main(String [] args){
int a=10;
System.out.println(a/0.0);
}
Console: Infinity
Это потому что JVM автоматически вводит cast int в double, поэтому мы получаем бесконечность вместо ArithmeticException.
Хотя разработчики Java знают о двойном примитивном типе и классе Double
, делая арифметику с плавающей запятой, они не уделяют достаточного внимания Double.INFINITY
, NaN
, -0.0
и другим правилам, которые определяют арифметические вычисления с их участием.
Простой ответ на этот вопрос заключается в том, что он не будет бросать ArithmeticException
и возвращать Double.INFINITY
. Также обратите внимание, что сравнение x == Double.NaN
всегда оценивается как false
, даже если x
само является NaN
.
Чтобы проверить, является ли x
NaN
, следует использовать вызов метода Double.isNaN(x)
, чтобы проверить, является ли заданное число NaN или нет. Это очень близко к NULL
в SQL
.
Это может быть полезно для вас.