I would like to know if there is a way where you have a .net app name appA where it receives a tcp socket connection and then according to some rules will send the socket connection to another .net app named appB. I know this violates alot of security and good practice,but would be interesting if it would be possible.
Proxy
One option is to make AppA a proxy. That is, it accepts the connections, and connects on behalf the client to AppB - and merely forwards the data.
Socket Duplication
The solution you are really looking for is Socket.DuplicateAndClose()
(make sure you read the documentation carefully). This allows you transfer the control of a socket between processes.
Typically you would:
- Start AppA, AppB and AppC.
- Use remoting to allow AppA to communicate with AppB and AppC.
- When a connection is made to AppA, determine who to send it to and:
- Duplicate and close the socket in AppA.
- Send the socket to the child process via remoting.
- Open the socket in AppB using the
Socket(SocketInformation)
constructor.
No need to forwarding the connection, it can be use to act as a middle men
- You receive the first connection
- Process some rules
- All ok, connect to AppB and everything that get's from AppA, send to AppB
- If Rules say "no", send an error to AppA
来源:https://stackoverflow.com/questions/7359330/send-a-socket-between-applications-c-sharp