Как связаться с TcpClient в C # из-за прокси? - PullRequest
0 голосов
/ 03 декабря 2010

Я за прокси и не могу подключиться с TcpClient к POP3 GMail.Я получаю следующую ошибку:

System.Net.Sockets.SocketException (0x80004005): No such host is known

Любые подсказки?

Код:

var tcpClient = new TcpClient();
try
{
    tcpClient.ReceiveTimeout = 60000;
    tcpClient.SendTimeout = 60000;
    tcpClient.Connect("pop.gmail.com", 995);
    output.AppendLine("Connection OK!");
}
catch (SocketException e)
{
    output.AppendLine(e.ToString());
}
finally
{
    tcpClient.Close();
}

app.config (прокси-сервер настроен в Internet Explorer):

<?xml version="1.0"?>
<configuration>
  <system.net>
    <defaultProxy>
      <proxy usesystemdefault="True" />
    </defaultProxy>
  </system.net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

1 Ответ

1 голос
/ 03 декабря 2010

Ничего.Невозможно.Это выглядит следующим образом:

  • DNS вашей компании не включает общедоступную информацию DNS.
  • Таким образом, ваши пользователи запрашивают прокси, который запрашивает внешний DNS.
  • Это в значительной степени подразумеваету вас также нет никакой возможной маршрутизации
  • Без маршрутизации TCP-соединение в любом случае невозможно.По замыслу.

Возможные обходные пути:

  • Используйте прокси SOCKS.Маловероятно существовать.
  • Спросите в своем ИТ-отделе - как решить эту проблему, чтобы обойти блокировку, но отправлять электронные письма по соответствующему каналу (внутренняя служба SMTP).
  • ЕслиПравильный путь - использовать Gmail, какой-то не слишком умный человек (например, менеджер) загонит вас в угол.Затем они должны открыть для вас TCP-соединение и сделать общедоступной DNS-информацию доступной для вашего компьютера.

В конце вы можете использовать оба способа - либо вы заставляете всех клиентов через проксиили у вас есть прямые TCP-соединения outgiong.

...