The NAT traversal logic here is really basic and won't hold up well in practice.<p>A good chunk of NAT devices will pick external port based on [src ip/port, dst ip/port] combo, not just [src ip/port], so "WAN IP/port" you get from STUN will get you nothing useful. Not by itself.<p>STUNs should be used for discovering the <i>pattern</i> in NAT port overloading logic and then using it to predict which port your peer will use <i>towards you</i> if you were to try and connect <i>now</i>.<p>That is, you need to know the overloading pattern <i>and</i> then also time stuff correctly.<p>For that reason you will need a rendezvous server and it's also the best to let the server drive the whole process (as opposed to what STUN-based setups do, which is to let clients do it).<p>PS. In my past life I made a P2P VPN called Hamachi, which used all this stuff very extensively.
Am I the only one that has long since given up traditional desktop streaming software like TeamViewer/AnyDesk and the like for game streaming software (Parsec, Rainway, Steam Remote Play, etc) that just happen to offer desktop streaming because they can? The actual streaming tech in those feels worlds ahead in terms of quality/efficiency/stability/latency. And the UX has generally felt better as well with much more streamlined onboarding and everyday operation.<p>I personally have been using Parsec most often these days and might even start paying money for it soon for some of their advanced features, as they've recently pivoted their marketing towards the productivity side, which is a move I'm happy to support with my wallet. I honestly don't see a reason why someone would use any of the traditional players in the space these days for personal use. Not sure how the tech in this project compares, but I think it should try to measure itself against something like Parsec/Rainway rather than TeamViewer/AnyDesk if it wants to compete at the state of the art.
This is one thing I'm surprised the open source community hasn't developed a popular alternative for: Teamviewer.<p>The core idea is simple: a video stream from one computer to another, with mouse and keyboard controls sent the other way. Connection negotiation can be done Magic Wormhole style, via basic STUN, encryption can be done in a number of ways. Add some clipboard and P2P file transfer features and you've got most of Teamviewer/Anydesk/whatever implemented. There's VNC, but that's horribly outdated and the UX is absolutely terrible.<p>I think there's a business to be built here; open source remote support with a Gitlab-style self-hosted option companies can put down in their own networks, or have them pay you for management and servers.<p>This project is a good starting place, as any. With some tweaks you could probably build this into a end-user friendly system with your usual numeric code and random password. There's a business to be built in this space, I'm sure of it. I wish I had the expertise to take advantage of that.
For those wanting a simple Linux alternative: If you have SSH access as the same user as the one running the X11 session on the remote host, you can do this:<p><pre><code> ssh -v -L 5900:localhost:5900 user@remotehost 'DISPLAY=":0" xterm -e "x11vnc -localhost"'
</code></pre>
And then<p><pre><code> krdc vnc://localhost
</code></pre>
or whatever VNC client you like.<p>For linux-to-linux this has replaced TeamViewer for me, together with zerotier.com for getting through NAT.
Do you have any plans in case your software becomes famous to scammers?<p>TeamViewer / Anydesk (and the rest) regularly take actions to disable accounts of fake call (scam) centers.<p>For examples of this check out the youtube channels of:<p>Jim Browning / Kitboga / Perogi and lots more
@mp85, I don't think your MIT license is compatible with AForge.NET's LGPL license. I'm not a lawyer, but I'm guessing your license should also become LGPL.
I wanted to thank everyone for sharing your experiences, point of views, for the support, for suggestions, and for sharing projects similar to P2P Remote Desktop. Thanks for making this discussion very interesting and constructive.<p>Gratitude is the fairest blossom which springs from the soul. (Henry Ward Beecher)
Re. remote desktop stability, not sure if my experience as someone censored by the GFW makes any sense, but when my RDP to oversea Windows host become unstable, Jump Desktop gives me fast and stable connection, and for free. Their program is lightweight and fast too.
When I RDP or VNC over Tailscale/Wireguard, isn't this basically what's happening? Sincere question, I don't really get networking all that well.