Отправить сокет между приложениями c # - PullRequest
1 голос
/ 09 сентября 2011

Я хотел бы знать, существует ли способ, при котором у вас есть приложение app с именем .net, где он получает соединение через сокет tcp и затем в соответствии с некоторыми правилами отправляет соединение через сокет в другое приложение .net с именем appB.Я знаю, что это сильно нарушает безопасность и хорошую практику, но было бы интересно, если бы это было возможно.

Ответы [ 2 ]

3 голосов
/ 09 сентября 2011

Прокси

Один из вариантов - сделать AppA прокси.То есть он принимает соединения и от имени клиента подключается к AppB - и просто пересылает данные.

Дублирование сокета

Решение, которое вы действительно ищетеSocket.DuplicateAndClose() (внимательно прочитайте документацию).Это позволяет передавать управление сокетом между процессами.

Как правило, вы будете:

  • Запустить AppA, AppB и AppC.
  • Используйте удаленное взаимодействие, чтобы AppA могсвязаться с AppB и AppC.
  • Когда установлено соединение с AppA, определите, кому его отправлять, и:
    • Дублируйте и закройте сокет в AppA.
    • Отправьтесокет для дочернего процесса через удаленное взаимодействие.
    • Откройте сокет в AppB с помощью конструктора Socket(SocketInformation).
1 голос
/ 09 сентября 2011

Нет необходимости переадресовывать соединение, его можно использовать как посредник

  1. Вы получаете первое соединение
  2. Обработать некоторые правила
  3. Все в порядке, подключитесь к AppB и все, что получает от AppA, отправьте в AppB
  4. Если правила говорят «нет», отправьте ошибку в AppA
...