Сокет C #: подключиться к серверу через прокси-сервер

StackOverflow https://stackoverflow.com/questions/818921

  •  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 и посмотреть, получаете ли вы то же сообщение о времени ожидания / ошибки или вы отключаетесь после ввода нескольких символов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top