java udp打洞成功后可以用tcp传送不
UDP打洞之后很难改用TCP传输。TCP的传输特性决定了研究其打洞的很少,不现实。
丢包问题,可以双方按照约定的协议,批量确认+超时确认,然后要求重传。
如何使用java实现tcp的p2p的打洞技术
公网设服务器S, 2p点(P1.P2) 连S,过S双方获取对方公网IP.
P1 P2都向对方的(公网IP+任意端口)发起连接,当然无任何回应,但是会发生2件事
1 P1 P2都在自己的外网NAT上打了个连接对方的洞,这个洞会保持一会儿.
2 连接的时候S抓取到P1 P2 的NAT端口,然后将此端口发送给对方,
然后就可以想办法连接了.
Java点对点 打洞通信原理
网络任何位置放一个SQL Server,客户端去连接SQL Server,做数据操作共享,这样算是一个B/S或者说一个C/S通信。服务器就是SQL Server,但这个不是点对点,叫分布式
传输命令用Socket类,他的作用是传送字节形式,分为UDP/TCP通信方式,这类方法实际上比JDBC还要耗费资源
JAVA udp打洞出现的问题~
建议首先在java环境下测试下你所要达到的逻辑(非android模拟器下),若成功再移植到android上,个人认为可能是模拟器监听pc端口时出现了丢包。