Сокет-сервер, который передает данные одному или нескольким клиентам.C # - PullRequest
2 голосов
/ 20 ноября 2011

Здравствуйте. Я пытаюсь создать своего рода прокси-сервер.
Цель состоит в том, чтобы один клиент (для запуска) подключился к серверу сокетов, а затем имел байт ретрансляции сервера сокетов для байта другому серверу.Первоначальная концепция была бы просто посредником.Я искал и нашел код из MSDN, чтобы создать сокет-сервер и отправить данные обратно клиенту, а также новое соединение.У меня возникли проблемы при создании сервера, который будет просто ретранслировать сообщения, но все равно будет ожидать новых подключений.

Любые советы или указания помогут.

Эта статья была наиболее близкой к тому, что яя пытаюсь сделать: Можно ли «ретранслировать» сокет?

Клиент -> MYSERVER -> Пункт назначения (и наоборот)

Клиент должен иметь возможностьсвязаться с пунктом назначения без изменений, просто с моим сервером посередине.

Спасибо!

Обновление: у меня есть сервер сокетов, который читает все байты по проводам.Затем мне нужно скопировать эти байты в новый сокет и вернуть обратно полученные байты.

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Я не понимаю, в чем проблема ...Просто создайте класс сервера, используя Socket.AcceptAsync для принятия сокетов.Для каждого принятого сокета создайте класс Session.В классе сеанса подключитесь к Destination с помощью Socket.ConnectAsync.После установления соединения начните чтение данных из обоих сокетов с помощью Socket.ReceiveAsync.Получив данные, вы записываете их в противоположный сокет.Для более простого подхода вы можете использовать NetworkStream - поскольку Socket SendAsync / Send не гарантируется для отправки целых данных, в то время как NetworkStream BeginWrite / Write равен.

Также, если производительность не требуется, вы можете использовать методы Accept / Connect / Receive instedxxxAsync.

0 голосов
/ 06 декабря 2012

Может быть, мы можем использовать существующую библиотеку, например DeleGate .Мы внедрили это в нашу систему.Вы можете установить его как Windows Services.

...