为 webRTC 使用特定端口

2024-03-04

当使用 webRTC 创建点对点音频连接时,如果用户位于路由器后面,我们使用的 STUN 服务器将返回公共 IP。现在在 ICE 对象中,我可以看到 rport 始终介于 50000 及以上。

有没有办法使用特定端口,以便用户不必打开所有这些端口?


有没有办法使用特定端口,以便用户不必打开所有这些端口?

我认为你有一个误解。 STUN 和 ICE(包括其 WebRTC 衍生产品)的全部目的是避免任何人必须在其 NAT 上打开端口。相反,STUN 和 ICE 动态打开端口。

这是它的工作原理(非常简短的描述)。

  1. 客户端在随机端口上打开套接字(例如 50001)

  2. 使用该套接字联系 STUN 服务器以发现该套接字的外部 IP:端口映射。 (例如 192.168.1.2:50001 映射到 1.2.3.4:50001)。内部地址和外部地址之间的端口不一定必须匹配,但通常需要匹配,因此在本示例中我将保留这一点。

  3. 通过外部机制(SIP、XMPP、Jingle、带字符串的杯子),交换两个节点的候选地址列表。这包括收集的所有已知内部和外部地址(例如 192.168.1.2:50001 和 1.2.3.4:50001)。

  4. 使用步骤 1 中打开的同一个套接字,双方直接在彼此之间发送 (STUN) 消息(UDP 数据包)。第一对消息可能被路由器/防火墙阻止。但由于一侧向远程地址发起了出站数据包,因此来自该地址的后续数据包将被允许返回。这称为“打洞步骤”。因此,端口是动态打开的,无需路由器进行任何特定配置。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 webRTC 使用特定端口 的相关文章

  • 网络中的端口是什么? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在学习java网络 我不清楚什么
  • 使用 Docker 的 mediasoup v3

    我正在尝试运行一个2docker 中的 WebRTC 示例 使用 mediasoup 当我在一组实例上进行视频通话时 我想运行两台服务器 我的错误 你有没有看到这个错误 createProducerTransport null 错误 由于地
  • 如何杀死 Linux 中特定端口上运行的进程?

    我尝试使用关闭tomcat shutdown sh来自雄猫 bin目录 但发现服务器没有正常关闭 因此我无法重新启动我的 tomcat 正在端口上运行8080 我想杀死正在运行的tomcat进程8080 我首先想要获得在特定端口 8080
  • 如何将音频从浏览器流式传输到 WebRTC 本机 C++ 应用程序

    到目前为止 我已成功运行以下示例 WebRTC 原生 C 到浏览器视频流示例 http sourcey com webrtc native to browser video streaming example 该示例展示了如何将视频从本机
  • 将 QTcpSocket 绑定到特定端口

    我正在通过一个连接QTcpSocket to a QTcpServer 我可以在服务器端指定侦听端口 但客户端会选择随机端口进行连接 我尝试过使用该方法QAbstractSocket bind但这没有什么区别 这是我的代码 void Con
  • 为什么turn服务器不支持tcp连接?

    我是 WebRTC 新手 我需要为我的 webrtc 应用程序配置我自己的 Turn 服务器 我使用以下命令安装了我的转弯服务器 apt get install coturn 我只需要通过 tcp 运行转变服务器 它不必使用 UDP 进行任
  • MediaStream 未处理的承诺拒绝:[object DOMError](在 Safari 11 中)

    在下面初始化 WebRTC 的方法中 我在 Safari Tech Preview 11 中遇到了未处理的承诺拒绝 具体来说 当我分配MediaStream像这样的视频元素 video srcObject event stream 堆栈跟踪
  • 通过 Websockets 进行 WebRTC 视频聊天

    我正在尝试使用 webRTC 和 WebSockets 进行信号发送来开发视频聊天应用程序 我的问题是 我不知道创建 RTCPeerConnection 并通过 webSocket 连接两个对等点 2 个浏览器 的过程是什么 至少在本地 我
  • Windows 下 iOS 开发的替代方案 [重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 Windows 开发机为 iPhone 进行开发 https stackoverflow com questions 22358 how can i develop for iphone u
  • 检测 MediaStreamTrack 是否为黑色/空白

    我正在与peerjs 创建视频聊天 我使用以下功能切换相机 开 关 function toggleCamera localStream getVideoTracks 0 enabled localStream getVideoTracks
  • 具有相同容器端口的多个 docker 容器连接到同一网络

    我有一个依赖于多个 Docker 容器的应用程序 我使用 docker compose 以便所有这些都位于同一网络中以进行容器间通信 但是 我的两个容器正在各自容器内侦听相同的端口 8080 但是映射到主机上的不同端口 8072 8073
  • webrtc - 获取网络摄像头的宽高比

    我正在尝试学习如何开发 webRTC 应用程序 我想知道是否可以获得相机的宽高比 我不知道它是否有帮助 但我正在使用 webrtc io 但是 if更好 我可以停止使用它 From MDN https developer mozilla o
  • 无法更改 Xampp 中的 Apache 端口号

    我刚刚下载了Xampp服务器xampp win32 1 8 2 0 VC9 zip http www apachefriends org en xampp windows html 641文件 Windows 并尝试启动 apache 服务
  • Webrtc 重新协商,Firefox 到 Chrome,反之亦然,不更新流

    我已经成功建立对等连接 但我无法在 Chrome Firefox 上进行正确的重新协商 我已按照重新协商的步骤 将相机 视频更改为屏幕共享时 更新流 曲目 添加 删除 Changer 这击中了需要谈判 改变者 创建报价 更改者 设置本地描述
  • 使用peerjs webrtc共享屏幕+共享系统音频时麦克风不工作

    我们已经尝试过共享屏幕声音的 共享屏幕时 麦克风和屏幕共享音频不能同时工作 麦克风不工作时系统音频已开启 系统音频确实不工作如果末端麦克风打开 请解释一下问题是什么 这是代码 function startScreenShare if scr
  • docker 主机 (OSX) 上的关闭端口在内部 docker 网络上保持/报告打开状态

    在 OSX 12 3 上将 Docker 升级到 4 6 0 后 当我停止 PHPStorm 中的 xdebug 监听客户端时 我遇到了一些奇怪的问题 似乎后续请求总是超时 因为 docker 报告 host docker internal
  • #1045 - 用户“root”@“localhost”的访问被拒绝(使用密码:YES)

    这可能看起来多余 但我无法找到正确的解决方案 我无法使用 mysql 控制台登录 mysql 它要求输入密码 但我不知道我实际输入的内容 有办法获取密码或更改密码吗 这就是我的 config inc 的样子 当我尝试打开 phpmyadmi
  • 使用 boost::asio 是否有一种可移植的方法来查找空闲端口号

    我目前正在尝试找出一种方法来查找空闲端口号以建立连接 最好使用 boost asio 然后 该端口号将用于侦听 只有这样我才能打开套接字 大致来说 有没有办法做到 tcp resolver query query localhost por
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • Webrtc数据通道始终处于连接状态且未打开

    我正在创建一个小型 WebRTC 应用程序 目前用于交换短信 我已经使 WebRTC 连接正常工作 但数据通道始终保持在 连接 状态并且永远不会进入 打开 状态 请告诉我我在这里缺少什么 下面是JS socket onmessage fun

随机推荐

  • 所有特征必须在 [0, 9] 或 [-10, 0] 范围内

    我有以下代码 df load data pd set option display max columns None df dtypes intBillID object chBillChargeCode object chBillNo o
  • 如何管理非托管 Eclipse 格式化配置文件?

    我们的项目有一个 非托管配置文件 和节省时间的自动格式化 我希望能够修改此非托管配置文件的设置 并能够将它们重新签入版本控制 Eclipse 的帮助文档非常没有帮助 您不允许更改这样的配置文件 只有配置文件的创建者 管理员 可以更改它 我不
  • 在 Erlang 中编写和编译自定义行为

    我试图在 Erlang 中编写并编译自定义行为 我找不到任何关于如何编译此行为的明确文档 module bla export start link 0 behaviour info 1 behaviour info callbacks gt
  • 如何调试grpc调用?

    我试图找出为什么我的grpc http grpc iocall 不起作用 但我不知道如何打开调试 因此我可以看到通过 grpc 连接发送和接收的数据 如何打开 grpc 调用的调试 您可以设置GRPC TRACE环境变量为all让 grpc
  • 带有阻塞代码的 setTimeout 行为

    这是我的测试代码 小提琴here http jsfiddle net Xvh55 console log Before wait setTimeout function console log Yo 1000 var start Date
  • JavaScript 和多语言最佳实践

    使用 DOM 操作 javascript 的多语言网站的最佳实践是什么 我使用 JavaScript 构建了网站的一些动态部分 我的第一个想法是使用一个包含文本字符串和语言代码的数组作为索引 这是一个好主意吗 当我之前构建多语言网站时 不是
  • 访问令牌没有 openid 范围

    我正在做 sso 示例 travelocity com 示例 当我尝试使用此命令通过 oauth 访问令牌访问用户信息时 卷曲 k H 授权 承载b68ba941c9da3d2644d8a63154d28 https localhost 9
  • Java日期排序方法?

    我有一个日期字符串数组 格式为 2010 05 04 11 26 46 0530 如何检查数组中的特定日期是否 gt 今天 thanks DateFormat df new SimpleDateFormat yyyy MM dd HH mm
  • 如何重定向消息以在 Django 模板中显示它们?

    我有一个验证并保存表单的视图 保存表单后 我想重定向回 l ist object 视图 并显示成功消息 客户 xyz 的表单已成功更新 HttpResponseRedirect 似乎不起作用 因为它只有一个 url 参数 无法传递字典 我尝
  • 忽略对角线的 Numpy 数组的最小值

    我必须找到忽略对角线元素的 numpy 数组的最大值 np amax 提供了忽略特定轴来查找它的方法 我怎样才能实现相同的忽略所有对角线元素 你可以使用面膜 mask np ones a shape dtype bool np fill d
  • 在 MAC 上使用 Xamarin Studio 运行 Selenium 测试

    我正在尝试运行我创建的测试Visual Studio 2010 using Selenium WebDriver 在使用 Xamarin Studio 的 MAC 中 我有chromedriver exe作为 EmbeddedResourc
  • 它不是将数据插入数据库

    我想将数据插入到Image Question桌子 但它不会执行插入操作Image Question Table 我收到两个错误 注意 未定义的偏移量 0 in 第 305 行 注意 未定义的偏移量 第 305 行上的 3 in 这是您可以使
  • 如何解决“无法解析某些模块 oracledb”?

    我已经设置了一个流星项目并导入了oracledb节点包 https github com oracle node oracledb 但是在通过启动项目后meteor run我收到控制台构建错误 说明Unable to resolve som
  • 将任何数据类型序列化为向量 - 使用reinterpret_cast?

    我在搜索中没有找到任何直接相关的内容 所以如果这是重复的 请原谅 我想要做的是通过网络连接序列化数据 我的方法是将我需要传输的所有内容转换为std vector lt uint8 t gt 并在接收端将数据解包到适当的变量中 我的方法如下
  • 方法可以变成静态的,但是应该吗?

    ReSharper 喜欢指出每个 ASP NET 页面的多个可以静态化的函数 如果我将它们设为静态会对我有帮助吗 我应该将它们设为静态并将它们移至实用程序类吗 在我看来 性能 命名空间污染等都是次要的 问问自己什么是合乎逻辑的 该方法在逻辑
  • xsl:如何选择节点中的前x个字符?

    我在 XML 文档中有以下节点
  • Android,我可以使用 putExtra 传递多个值吗

    我想将两个值传递给另一个活动 我可以用 putExtra 来做到这一点 还是必须以更复杂的方式来做到这一点 从我的阅读看来 例如 这样的东西可以工作吗 public final static String ID EXTRA com fnes
  • 删除 Firefox 中的默认选择框箭头

    我必须删除 Firefox 中的默认选择框箭头 我使用了下面的代码 webkit appearance none moz appearance none background rgba 0 0 0 0 它在 Chrome 中运行良好 但它在
  • 保存照片并立即使用

    我有以下用于拍照并将其保存到相机胶卷的代码 我需要能够在保存后使用它 而不必返回图库并选择它 我还没有找到任何关于如何执行此操作的示例 IBOutlet weak var imagePicked UIImageView IBAction f
  • 为 webRTC 使用特定端口

    当使用 webRTC 创建点对点音频连接时 如果用户位于路由器后面 我们使用的 STUN 服务器将返回公共 IP 现在在 ICE 对象中 我可以看到 rport 始终介于 50000 及以上 有没有办法使用特定端口 以便用户不必打开所有这些