objective


Developing a prototype application that uses a technique to directly (peer-to-peer) connect two clients behind a NAT. The clients should be able to open a direct TCP connection after negotiating via an intermediate server that is not behind NAT.

Entwickeln einer Anwendung, die Verfahren anwendet, um zwischen zwei Clients, die sich beide hinter NAT befinden.


intermediate server

Screenshot of server log
Screenshot of server log

Server software rewritten in C

to work on linux servers -- running on teamwiki.net


1. My first working prototype of the intermediate server was written in VB.Net
http://labs.max-weller.de/nat_punch/server_net.txt

2. server application in C
main program source udpserv3.c
http://labs.max-weller.de/udpserv3.txt

complete source (including Christopher Clark's hashtable)
http://labs.max-weller.de/nat_punch_udp_server.tgz


Downloads


Screenshot of first client prototype
Screenshot of first client prototype

Screenshot of first client prototype

(klicke auf den freien Bereich zum schließen)


Client in VB.Net - Binary
New version - Download: http://mw.teamwiki.net/docs/download/mw-p2p-test.exe
Old version - Download: http://mw.teamwiki.net/docs/download/natpunchtest.exe



Sources


protocol for connection to the intermediate server
Structures in VB.net

information sources

C - HashTable
[ dead link: http://www.cl.cam.ac.uk/~cwc22/hashtable/ ]
> Web archive: http://web.archive.org/web/20101019053223/http://www.cl.cam.ac.uk/~cwc22/hashtable/

http://www.cse.yorku.ca/~oz/hash.html

HowTo - Makefile
http://www.ijon.de/comp/tutorials/makefile.html#targets

C - Sockets
http://www.linuxhowtos.org/C_C++/socket.htm

breaking through NATs
http://alumnus.caltech.edu/~dank/peer-nat.html
http://www.mindcontrol.org/~hplus/nat-punch.html




Kommentare