У меня 2 IP-адреса на моем сервере.По умолчанию ip первого интерфейса используется в каждом приложении.Но я хочу связать мою программу на C # с другим IP.Я использую код из этой темы Выберите одно из многих подключений к Интернету для приложения .Все работает правильно, но один момент.Мой простой http-запрос по умолчанию ip работает быстрее, чем на 50 мсек, чем связанный.Почему так?Я подозреваю, потому что я использую BindIPEndPointDelegate
, но я не понимаю, почему.
UseIP ip = new UseIP("10.8.17.245");
HttpWebRequest req = ip.CreateWebRequest(new Uri("https://api.binance.com/api/v1/ticker/24hr?symbol=BTCUSDT"));
using(WebResponse response = req.GetResponse()) {
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
}
public class UseIP {
public string IP {
get;
private set;
}
public UseIP(string IP) {
this.IP = IP;
}
public HttpWebRequest CreateWebRequest(Uri uri) {
ServicePoint servicePoint = ServicePointManager.FindServicePoint(uri);
servicePoint.BindIPEndPointDelegate = (servicePoint1, remoteEndPoint, retryCount) => {
IPAddress address = IPAddress.Parse(this.IP);
return new IPEndPoint(address, 0);
};
//Will cause bind to be called periodically
servicePoint.ConnectionLeaseTimeout = 0;
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(uri);
//will cause bind to be called for each request (as long as the consumer of the request doesn't set it back to true!
req.KeepAlive = false;
return req;
}