Прокси-сервер C # с использованием сокетов, как мне это сделать? - PullRequest
3 голосов
/ 12 апреля 2010

Я пишу прокси с использованием .NET и C #. Я не много занимался программированием на Socket, и я не уверен, что это лучший способ. Как лучше всего это осуществить? Должен ли я использовать синхронные сокеты, асинхронные сокеты? Пожалуйста, помогите!

Это должно ...

  • Принимать подключения от клиента на два разных порта, и сможет получать данные по обоим портам на в то же время.
  • Подключитесь к серверу через два разных порта и сможете отправлять данные на оба порта одновременно.

  • Немедленно подключитесь к серверу и начните пересылку пакетов, как только будет установлено клиентское соединение.

  • Пересылка пакетов в том же порядке, в котором они были получены.

  • Будьте настолько малы, насколько это возможно.

  • Мне не нужна способность для нескольких клиенты для подключения к прокси, но это было бы неплохо, если его легко реализовать.

Клиент --------- Прокси ------- Сервер
--- | ----------------- | ---------------- |
Порт <--------> Порт <-------> Порт
Порт <--------> Порт <-------> Порт

Ответы [ 2 ]

3 голосов
/ 12 апреля 2010

Я возился с этим исходным кодом раньше. Это было сделано хорошо, рекомендуется.

1 голос
/ 01 сентября 2011

Пожалуйста, проверьте PortFusion ! Это комплексное, активно используемое и разработанное решение для распределенного обратного прокси-сервера для всего трафика на основе TCP. Он написан для .NET 4.0 и поставляется с полным исходным кодом.

Я протестировал методы ReceiveAsync и SendAsync, представленные в .NET 3.5, но не нашел, чтобы они достигли настолько высокой пропускной способности, насколько это возможно для синхронных - асинхронные должны лучше масштабироваться в случае большого числа одновременных клиентов. 1007 *

Максимальная пропускная способность для контролируемого количества клиентов: использовать синхронные методы Достигнуто максимальное количество одновременных подключений: async

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