问题标签 [nat-traversal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
772 浏览

tcp - 从服务器向客户端发送消息的最快方式

我想制作一个每秒发送数千条消息的应用程序。这些将是非常小的消息,每个只有几个字符,但也可能非常快,每个客户端每秒可能 10-20 个。消息将仅从服务器发送到不同的客户端,并且一次可能多达 10,000 个用户,因此每秒发送 200,000 条消息。

这些可以通过 3g 和/或 wifi 发送给客户端。

你认为有什么能力做到这一点?一个 xmpp 应用程序,带有 NAT 遍历的 udp 消息,还是我还没有想到的其他东西?

0 投票
2 回答
164 浏览

java - 在 Web 服务器上运行 Java EE 应用程序

以下是一个在端口 15445 上侦听 SOCKET 的线程。每当向其发送数据报数据包时,它都会在其中添加一个字符串(来自 SERVER 的回复)后转发回发送者的地址。我希望这段代码在 Internet 上的某个地方运行,但我不知道从哪里开始。

是否可以?我可以在 Tomcat 服务器上运行此代码还是需要做一些不同的事情?

0 投票
2 回答
3961 浏览

port - SIP INVITE 请求端口搞砸了

使用resiprocate开发 NAT 遍历解决方案,它工作正常,但通常 SIP INVITE 获取失败,特别是在 cisco 路由器上

1. 1024端口发出SIP REGISTER

来源:107.108.188.26

目的地:107.108.188.52

用户数据报协议,Src 端口:1024 (1024),Dst 端口:sip (5060)

在此处输入图像描述

2. SIP 状态 200 OK

来源:107.108.188.52

目的地:107.108.188.26

用户数据报协议,Src 端口:sip (5060),Dst 端口:1024 (1024)

3. SIP/SDP 邀请

Source: 107.108.188.52 Destination:107.108.188.26 User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)

在此处输入图像描述

理想情况下,第 1 步和第 3 步中的发送端口应该是 1024。请指出我背后的任何可能原因

0 投票
1 回答
264 浏览

c++ - 如何在 Udp 封装应用程序中实现 Ip?

我想开发测试应用程序(类似于 IpSec,但非常简单),该应用程序实现将“PC”的所有 IP 数据包封装在一些“另一个数据包”中。这个“另一个数据包”被发送到另一台计算机(类似于“代理”)解压原始 IP 数据包并将它们发送到其原始目的地。然后这个“代理”接收“PC”的数据包并对其进行解密,封装并发送到“PC”等。应用程序必须支持使用NAT。我知道带有 NAT 的 IPSec 只能使用 NAT 遍历,因此“另一个数据包”将是 udp,即我将使用一些加密将 Ip 封装在 UDP 中。

我意识到 winpcap 并不是我开发此类应用程序所需要的。我可以在没有特殊硬件的情况下开发这样的应用程序,只使用软件吗?我应该使用什么样的工具(也许我需要编写自己的驱动程序)?

0 投票
1 回答
524 浏览

c# - 我如何通过互联网使用 .net 远程处理

我在不同的计算机上有两个应用程序,而不是通过远程通道相互连接。我想从不同网络(通过 Internet)上的客户端控制服务器。

  • 我怎么能这样做?
  • 是否可以将远程配置配置为绕过/打孔 NAT?
0 投票
2 回答
360 浏览

android - 智能手机到智能手机的通信 - 有哪些选择?

我开发了一款 iPhone 游戏,我想添加多人游戏功能。为了做到这一点,我需要在游戏期间在 iphone 之间进行双向连接。我在谷歌做了一些研究,得出了以下选项:

  1. 在云中获取虚拟专用服务器或专用机器,并实现将重放设备之间通信的服务器(稍后,可以使用更复杂的 nat 遍历技术)。冒险: A. 不将自己绑定到特定的智能手机平台。B. 服务器可以处理一些逻辑。C. 可以添加更多功能,例如统计和高级日志记录。缺点: A. 开发另一个软件——服务器。B. 为服务器托管支付大量费用(每月 80 美元 - 500 美元)。C. 照顾服务器安全和维护服务器。

  2. 使用 Apple 游戏中心。优点: A. 简单快速。(使用游戏套件) B. 免费(或低成本?我找不到任何参考) 缺点: A. 我只能使用游戏中心提供的羽毛。B. 我无法让我的游戏跨平台。(《部落冲突》开发商做了什么?)

还有其他选择吗?我寻找类似 Game Center 但跨平台但找不到的服务。

我错过了优势/劣势吗?

0 投票
0 回答
1171 浏览

java - 使用 Java 和 ICE(交互式连接建立)协议的 NAT/防火墙穿越

我的目标其实很简单。我想通过 Internet 创建 java p2p 连接。有了这个连接,我想做音频/视频聊天。我知道那里有足够的解决方案,但我需要自己的。最好的办法是为它提供一个工作库,其中包含良好的源代码、示例、文档和教程。但所有这些几乎是不可能找到的。我现在搜索了将近 1 周的时间来寻找解决方案,但只找到了使用 ICE、STUN 和 TURN 的库。但是我需要在 java 中建立连接的工作示例,但几乎一无所获。希望您能理解我的问题,以便我可以快速继续建立有效的 p2p 连接,例如 skype ;)

UpNp 不是一个选项,因为许多路由器不支持它。我已经找到但我无法开始工作的解决方案:ice4j、stunt、stun4j、jxta 和对我来说最有希望的一个 icedjava:https ://java.net/projects/siptools/pages/IcedJava

太感谢了!

0 投票
0 回答
1251 浏览

networking - 蜂窝网络 NAT 穿越

我尝试为我的应用程序实现 UDP 打孔算法。当两个对等方联系服务器以显示其公共 IP 时,3G 蜂窝 NAT 为相同的内部 UDP 端口分配了恒定的外部端口,但是,3G 蜂窝 NAT根据目标更改了内部->外部端口映射。

因此,例如,如果 C 是静态 IP 服务器 A->C 映射到端口 1234,而 A->B 映射到端口 5678。这样 UDP 打孔失败。

由于那些蜂窝 NAT 使用 CGN,因此不支持 UPnP/NAT-PMP。我已经阅读了有关 CGN 的 PCP 的信息,其功能类似于这些,但是,我没有在 PCP 上找到任何协议信息。

有谁知道是否有办法克服这个目的地变量端口映射问题?

通过端口转发(如 PCP)或遍历(PREFFERED)。

最后一件事。有一些概念证明,例如skype、viber和最重要的torrent 下载器,例如那些依赖于 vuze-core(frostwire) 的下载器,这些下载器在 android over 3G 和其他蜂窝网络上运行。所以他们显然必须找到解决方案......

提前致谢!

0 投票
1 回答
2640 浏览

c# - NAT Traversal 仅使用 C# 中的免费 STUN 和 TURN 服务器

我正在尝试制作一个在线游戏应用程序,它通过 Internet 与另一台 PC 点对点通信。由于两台电脑都可能在 NAT 下,而且我买不起外部服务器,我认为唯一的方法是使用免费的 STUN 和 TURN 服务器,例如Numb

但是,经过一些研究,我无法弄清楚如何使用这些服务器进行连接。

真的可以只使用那些服务器来做到这一点吗?如果是,你会怎么做?或者有更简单的方法吗?

我可以为此使用 UDP 或 TCP。

0 投票
1 回答
4219 浏览

sockets - 无法使用 boost asio 设置 TCP 源端口

通常,作为客户端从哪个源端口发送数据并不重要,但我仍然想做一些测试。因此,我尝试将客户端的套接字绑定到特定端口,但即使我在本地计算机上运行客户端和服务器(使用 localhost 作为目标地址),服务器也会告诉我我的源端口类似于 59000。我初始化了我的套接字像这样:

有可能做我想做的事吗?我试图找出我的路由器在消息通过时是否更改了端口。这就是我目前正在玩的 NAT 遍历的东西。