I'm trying to implement TCP hole punching with windows socket using mingw toolchain. I think the process is right but the hole doesn't seems to take. I used this as reference.
- A and B connect to the server S
- S sends to A, B's router IP + the port it used to connect to S
- S does the same for B
- A start 2 threads:
- One thread tries connecting to B's router with the info sent by S
- The other thread is waiting for an incoming connection on the same port used to connect to its router when it connected to S
- B does the same
I have no issue in the code I think since:
- A and B does get each other ip and port to use
- They are both listening on the port they used to connect to their router when they contacted the server
- They are both connecting to the right ip and port but get timed out (code error
10060)
I am missing something ?
EDIT: With the help of process explorer, I see that one of the client managed to establish a connection to the peer. But the peer doesn't seems to consider the connection to be made.
Here is what I captured with Wireshark. For the sake of the example, the server S and the client A are on the same PC. The server S listens on a specific port (8060) redirected to that PC. B still tries to connect on the right IP because it sees that the public address of A sent by S is localhost and therefore u