Сокет C #: подключиться к серверу через прокси-сервер
-
03-07-2019 - |
Вопрос
VS 2008
Я использую приведенный ниже код, чтобы определить, может ли клиент подключиться к нашему SIP-серверу. Это работало нормально. Однако клиент изменил там сеть, и теперь мое приложение должно подключаться к SIP-серверу из-за прокси-сервера.
Я получаю сообщение об ошибке:
" Попытка соединения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, так как подключенный хост не смог ответить xxx.xxx.xx.xx: xx "
Этот код работал нормально, пока я не подключился из-за прокси-сервера.
Я не вижу там никаких свойств, я могу добавить прокси-адрес в сокет.
Я что-то упустил?
Большое спасибо за любые предложения,
public bool IsSIPServerAvailable()
{
bool isAvailable = true;
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
try
{
sock.Connect("xxx.xxx.xx.xx", xx);
}
catch (SocketException ex)
{
Console.WriteLine(ex.Message);
isAvailable = false;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
isAvailable = false;
}
finally
{
if (sock.Connected)
{
sock.Close();
}
}
return isAvailable;
}
Решение
Смотрите мой ответ здесь , может быть, это будет полезно. Основная идея заключается в том, чтобы сначала установить соединение с прокси-сервером, а затем использовать команду HTTP CONNECT, чтобы открыть другое TCP-соединение с данным хостом и портом.
Другие советы
Это очень похоже на этот вопрос . Я не думаю, что возможно создать сокет-соединение через прокси-сервер. Вам понадобится какой-то протокол и более того, обычно администраторы настраивают прокси-серверы для отказа в соединениях с портами, отличными от стандартных HTTP, HTTPS.
Одним из решений было бы использование туннелирования по HTTP.
Основная идея прокси-сервера заключается в изменении топологии сети без изменения приложений. Таким образом, нет необходимости менять приложение, но требуется изменение конфигурации / настройки прокси. Р>
Чтобы проверить конфигурацию прокси-сервера независимо от вашего приложения, вы можете использовать Telnet Host Port
и посмотреть, получаете ли вы то же сообщение о времени ожидания / ошибки или вы отключаетесь после ввода нескольких символов. р>