On Jun 17, 2010, at 9:37 AM, Stefan Reich wrote:
I'm not sure about Deluge, but <http://divmod.org/trac/wiki/DivmodVertex> does some NAT hole-punching. It does it via sending UDP packets though, not by communicating directly with your router.
Yeah, I found that too... it looks quite interesting, but as you say, it is UDP-based. I know that there is a working TCP-solution. As I said, Deluge does it, and for example, the original Bittorrent client does it too.
For what it's worth, Vertex includes an *implementation* of TCP, on top of UDP instead of IP. You can run any Twisted stream-based protocol with Vertex, you don't need to send UDP datagrams around. (In fact, Vertex _only_ provides a stream-based transport; the UDP part is an implementation detail. If possible, vertex will try to use TCP first, and could be modified to use a techniques such as the ones described in <http://www.brynosaurus.com/pub/net/p2pnat/> section 4 to speak real TCP instead.)