对不起,如果这已发布在某个地方,我一直在工作/寻找好几天.
问题:
我通过与Android设备的对等网络进行通信时获得SocketTimeoutExceptions.
细节:
当这种情况发生时,AndroID设备使用他们自己的移动网络而不是wifi(无论如何,wifi不能用于此).
androID设备从whatismyip.com成功获取了他们的ipAddress.
一台设备将通过除我们正在使用的对等网络之外的其他方式向另一台设备发送其IP地址.
远程设备的IP地址将成功到达本地设备.
当本地设备通过对等网络响应时,发生TimeoutException.
我尝试过的:
将超时延长到相当长的时间段.
使用其他AndroID设备.
亮点:
应该注意的是,这个相同的对等网络已经过测试,可以在局域网中成功地在PC(运行linux和windows,如果这很重要)中工作.此外,我们还通过PC上的有线互联网连接测试了对等网络,这绝对有效.
我猜:
我认为设备被isp以某种方式隐藏,我将不得不编写一些代码来执行与nat遍历类似的 *** 作,但我不太确定.但是,如果设备被隐藏,我应该再次获得连接拒绝.
任何帮助深表感谢.
附:我现在无法发布代码,即使我可以在整个过程中使用几千行代码.
解决方法:
您应该尝试的是有效地调试您的连接,您可以做的第一件事是在android dev中暗示检查isReachable,即使不幸的是一些网络阻止了ICMP.
另一个需要注意的重要事项是即使你使用3g,你的网络仍然可以使用NAT地址,而且很常见的是相信我,所以你在whatsmyip上看到的ip也可能是一个NAT的ip.
下一步我会建议尝试在混合模式下使用您的应用程序,即一台PC和一台AndroID设备,并尝试连接到PC(确保有一个公共IP或至少转发端口),如果这有效,你知道肯定是你的移动 *** 作符.
如果确实如此,除了使用wifi或使用本地服务器在两个对等体之间建立连接之外,没有什么可以做的.
还要注意的是,p2p网络随着它们的增长越来越强大,你也可以实现已经连接到网络并且可以从外部访问的对等体帮助其他人连接到其他对等体.你应该查找p2p中继和Hole punching
总结以上是内存溢出为你收集整理的java – SocketTimeoutExceptions的来源全部内容,希望文章能够帮你解决java – SocketTimeoutExceptions的来源所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)