Сокет C #: подключиться к серверу через прокси-сервер - PullRequest
2 голосов
/ 04 мая 2009

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;
}

Ответы [ 3 ]

3 голосов
/ 27 июня 2010

Смотрите мой ответ здесь , может быть, это будет полезно. Основная идея заключается в том, чтобы сначала установить соединение с прокси-сервером, а затем использовать команду HTTP CONNECT, чтобы открыть другое TCP-соединение с данным хостом и портом.

1 голос
/ 04 мая 2009

Вся идея прокси-сервера заключается в изменении топологии сети без изменения приложений. Таким образом, нет необходимости менять приложение, но требуется изменение конфигурации / настройки прокси.

Чтобы проверить конфигурацию прокси-сервера независимо от вашего приложения, вы можете использовать Telnet Host Port и посмотреть, получите ли вы то же сообщение об ошибке или сообщение об ошибке, или отключитесь после ввода нескольких символов.

1 голос
/ 04 мая 2009

Это очень похоже на вопрос . Я не думаю, что возможно создать сокет-соединение через прокси-сервер. Вам понадобится какой-то протокол и более того, обычно администраторы настраивают прокси-серверы для отказа в соединениях от портов, отличных от стандартных HTTP, HTTPS.

Одним из решений было бы использование туннелирования по HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...