内网穿透 UDP打洞【c语言实现】

UDP打洞的方法就是两台处于不同内网的机器向一个众所周知的固定的外网发送包,然后该外网分别向两台内网机器发送对方与该外网链接的外网ip地址与端口,最后两台内网机器进行通讯。假如我们的两台处于不同内网的机器分别为A(192.168.1.10)和B(192.168.1.10),它们的网关分别为C1(123.123.123.123)和C2(234.234.234.234),众所周知的外网服务器为S(111.111.111.111),那么就是这样的

A(192.168.1.10:1234)—>C1(123.123.123.123:2345)—>S(111.111.111.1111:8888)
B(192.168.1.10:2134)—>C2(234.234.234.234:2314)—>S(111.111.111.111:8888)
S(111.111.111.111:8888)—>C1(123.123.123.123:2345)—>A(192.168.1.10:1234)
S(111.111.111.111:8888)—>C2(234.234.234.234:2314)—>B(192.168.1.10:2134)
B(192.168.1.10:2134)—>C2(234.234.234.234:2314)—>C1(123.123.123.123:2345)—>A(192.168.1.10:1234)
A(192.168.1.10:1234)—>C1(123.123.123.123:2345)—>C2(234.234.234.234:2314)—>B(192.168.1.10:2134)

A与S连接时在C1上打了个洞,B与S连接时在C2上打了个洞,我们只要知道这两个洞就可以相互发送数据了,下面是c语言代码的一个实现
S服务器中的程序

内网机器A中的服务程序

机器B的客户程序

–阅读次数(50)

发表评论

电子邮件地址不会被公开。

*