Re[2]: Создание прокси из TcpListener
От: alexsoff Россия  
Дата: 31.03.14 14:21
Оценка:
Здравствуйте, Sinclair, Вы писали:
Описание проблемы, примерно такое.
Есть сервер (принимает и обрабатывает данные), который слушает TCP порт,но он может быть за NATом, т.е. прямой доступ к нему из вне будет невозможен. Хотелось бы создать что-то типа внешнего прокси, которое просто будет связывать клиент данного сервера (по протоколу клиент возможен только один) и сам сервер. Действие прокси будет основано к регистрации серверов и присвоению им динамического номера. Клиент же будет обращаться к прокси с запросом соединения по номеру, который был получен сервером в предыдущем шаге. (скажем пользователь будет запускать клиент с полученным из вне номером сервера)
Хотелось бы, чтобы обмен данными в прокси был осуществлен простым копированием последовательности байт из одного TcpClient(представляющий сервер) в другой TcpClient (представляющий клиента).
Псевдокод действия прокси:

 TcpClient server = serverTcpListener.AcceptClient()
 ...
 TcpClient client = clientTcpListener.AcceptClient();

 //Вот здесь, как лучше осуществить взаимную передачу данных между server и client?
 //1) Использовать NetworkStream.CopyTo ?
 //2) Читать самостоятельно побайтно из первого и второго потока и направлять принятые байты в другой поток


Хотелось бы узнать, в правильном ли я направлении иду, или есть другие средства?

PS
Я понимаю, что задача отлично решается изменением протокола на очередь сообщений, однако код существует, и хотелось бы малой кровью сделать изменения в нем.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.