2011-09-09 35 views
1

我想知道是否有一種方法,你有一個.net應用程序名稱appA它接收到一個TCP套接字連接,然後根據一些規則將套接字連接發送到另一個 。名爲appB的網絡應用程序。 我知道這違反了很多安全和良好的做法,但如果可能的話會很有趣。發送應用程序之間的套接字c#

+0

你的意思是像... APPA一個給定的TCP端口上等待進入的連接,以及 - 如果建立 - 打開一個套接字連接到另一個應用程序APPB和發送有效載荷呢?當然有可能。 – Matten

+1

你想在這裏解決什麼問題? –

回答

1

無需轉發的連接,它可以使用作爲一個中間人

  1. 您會收到第一連接
  2. 過程的一些規則
  3. 一切ok,連接到APPB和那得到的來自APPA一切,發送到APPB
  4. 如果規則說「不」,發送一個錯誤APPA
3

代理

一種選擇是使AppA成爲代理。也就是說,它接受連接,並代表客戶端連接到AppB,並僅轉發數據。

插槽複製

你真正需要的解決方案是Socket.DuplicateAndClose()(請務必仔細閱讀的文檔)。這允許您在進程之間傳輸套接字的控制權。

通常你會:

  • 開始APPA,APPB和APPC。
  • 使用遠程處理允許AppA與AppB和AppC進行通信。
  • 當連接到APPA發,決定誰發給和:
    • 複製並關閉APPA插座。
    • 通過遠程處理將套接字發送到子進程。
    • 使用構造函數Socket(SocketInformation)在AppB中打開套接字。
相關問題