namuyan / srudp

Secure Reliable User Datagram Protocol implemented by pure Python
MIT License
34 stars 13 forks source link

Clarification on how to proceed with UDP Hole Punching #4

Closed pranav-bhatt closed 4 years ago

pranav-bhatt commented 4 years ago

So I've spent about a week trying to use your library(and yes I do know how hole punching works xD), but I can't seem to get it working. This is however probably an oversight on my end.

The code without srudp mirrors this and works perfectly.

But could you clarify if I need to use the connect() only on the two peers, or do I need to use it for establishing a connection with the control server as well? Basically a tutorial/example of sorts to implement hole punching would be great!

Thanks!

namuyan commented 4 years ago

https://github.com/namuyan/srudp#demo Hello, can’t you success this demo? If yes, please describe your PCs condition with netowrk info.

I will add tutorial with VPSs. This library looks big dependency on condition because any people don’t care about UDP, I think.

pranav-bhatt commented 4 years ago

Thanks for the reply! Sadly the demo didn't work for me probably because i was testing on LAN. I say this because i was running into issues with hole punching on the same network before i found your library.

I've found an alternative for now though, but would still love to use your library.

However I would like to point out that i was facing an issue while using connect() where it said that there was a tuple error or something when i tried passing the IP address. I tested this using Python3 on both Ubuntu and Windows(both different machines).

I'm not sure what i was doing wrong but i hope its reproducible with the above info. Unfortunately I am quite busy as of now, and if you need me to reproduce it, it might be a while, sorry :( . I should open it as another issue, but as i cant provide details yet, I thought I would mention it here for now.

namuyan commented 4 years ago

Thank you for progress report! But your report is too simple for detect what is wrong. Please check blow.

I will write tutorial after in a week, please try after.

namuyan commented 4 years ago

Let's try this tutorial

pranav-bhatt commented 4 years ago

Thank you so much for the tutorial! So, since you are using a VPS provider, you aren't behind a traditional router NAT right which would block all traffic, right? That is probably why I'm getting the "Time out" error.

Also, from what I know, you need an intermediate server listening to your traffic for Hole Punching through the aforementioned NAT of the router.

Can you explain how you are managing with just a sender and receiver? Thanks!

namuyan commented 4 years ago

Thank you for reply! Please read additional docs, I think it will help you.

And, Hmm. You looks being confused something (maybe UDP-hole-punching method and WebRTC protocol), this library provides low-layer method. You must implement high-layer like WebRTC.

This link provides you good understanding about NAT dependency. highly recommend "6.2 Test Results".