如何找到空闲的 UDP 端口对?

2024-01-06

RTP 规范规定,给定 RTP 流的 RTCP 数据包将在主 RTP 端口 +1 的端口上发送。例如,如果视频到达 RTP 端口 9010,那么在端口 9011 上,您可以期待 RTCP 数据包。

当我协商单播流(通过 RTSP 协议)时,我必须建议我希望将视频发送给我的一对端口(1 个用于 RTP,1 个用于 RTCP)...

现在,我知道如果我绑定一个端口为 0 的套接字,系统将从临时范围中选择一个空闲端口...我遇到的问题是我实际上需要一对端口,并且我需要 RTCP 端口是RTP端口的+1(事实上,我想我需要RTP端口是偶数)。

有没有办法找到一对空闲端口?这通常是如何完成的?


您会得到一个随机的,然后尝试下一个。

If the bind()第二个端口上的调用失败EADDRINUSE,冲洗并重复...

无论如何,在大多数系统上,如果两个调用足够接近,您可能不必重复该序列。

临时端口通常是按顺序分配的,因此下一个端口不空闲的唯一方法是,如果该端口已被长期存在的进程使用(在 UDP 上不太可能),或者其他人偷偷进入bind()在你们两个之间打电话。

同样,如果您需要 RTP 端口为偶数,则只需随机选择第一个端口,如果返回奇数端口,只需重试 - 根据上述情况,下一个端口很可能是偶数!如果没有,请冲洗并重复...

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

如何找到空闲的 UDP 端口对? 的相关文章

  • 错误号:11,资源暂时不可用

    我正在使用 c 套接字来实现可靠的 UDP 协议 我正在使用以下代码在等待确认的套接字上设置超时 我不确定为什么会收到 errno 11 资源暂时不可用 set timer for recv socket struct timeval tv
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • 如何从互联网访问本地网络内的服务器

    假设我有一个服务器应用程序在未直接连接到互联网但通过路由器连接的计算机上工作 所以问题是如何从不在内部网络 从互联网 内的另一台计算机连接到该服务器 据我所知 管理员可以配置路由器将指定端口请求重定向到该计算机 但我可以自动执行此操作吗 我
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • docker 主机 (OSX) 上的关闭端口在内部 docker 网络上保持/报告打开状态

    在 OSX 12 3 上将 Docker 升级到 4 6 0 后 当我停止 PHPStorm 中的 xdebug 监听客户端时 我遇到了一些奇怪的问题 似乎后续请求总是超时 因为 docker 报告 host docker internal
  • 在网络驱动器上安装带有 python win32 扩展的 python

    我需要保持大量 Windows XP 计算机运行相同版本的 python 并带有各种模块 其中之一是 python win32 我考虑过在所有客户端机器都安装的网络驱动器上安装python 然后只需调整客户端上的路径即可 Python 从网
  • 为什么WebRTC需要ICE协议才能运行?

    据我了解 ICE协议用于发现从最终用户设备到 外部 的节点 设备 我不明白为什么需要它 数据包路由不是由路由器和交换机等网络设备负责吗 他们应该找到从网关到最终用户设备的最短路径 实际上 路由器会记住他们之前发现的那些路由 此外 NAT 协
  • 用于高效大规模图遍历的数据库

    我有一个大型二分有向图数据集 约 2000 万个元素 在当前的使用中 我运行的遍历算法每次运行约 500 000 个节点 这些算法有效 但历史上运行的是从文本文件加载到内存的数据 文本文件似乎是一个不好的方法 所以我将数据作为邻接列表传输到
  • Docker 容器是否有自己的 TCP/IP 堆栈?

    我试图了解来自连接到主机的线路并定向到 Docker 容器内的应用程序的网络数据包在幕后发生了什么 如果它是一个经典的 VM 我知道到达主机的数据包将由虚拟机管理程序 例如 VMware VBox 等 传输到 VM 的虚拟 NIC 并从那里
  • kubernetes 如何将 pod 暴露给集群机器之外的东西?

    我读了以下内容Kubernetes 文档 https kubernetes io docs tutorials kubernetes basics expose expose intro 这导致以下 yaml 在集群中运行 postgres
  • Node.js:将 repl 挂接到远程节点服务器

    假设我有一个节点服务器在 mysite com 上运行 有没有办法设置该服务器以便我可以使用节点的repl api http nodejs org docs latest api repl html to securely从我的本地计算机连
  • 如何限制 Android 设备网络速度以进行测试

    我正在测试一个 Android 应用程序 该应用程序在低质量网络上管理其内容时遇到一些问题 我无法验证问题是否仍然存在 因为以我家的网络速度 120mb s 在我设法开始复制路线之前 所有内容都已经下载完毕 在这种情况下 不能选择使用 An
  • 如何限制 docker 容器仅侦听来自本地主机的连接?

    我正在运行一个 docker 容器docker run p 8080 8080 其他计算机可以通过访问访问我的服务器 my ip 8080 但是 出于安全原因 我希望只有 localhost 127 0 0 0 能够访问我的服务器 我不希望
  • C# 套接字数据报溢出

    我是 C 新手 我有一个关于udp套接字的小问题 我有一个聊天服务器 它接收特定结构的数据包 udp 数据报 为什么程序在套接字缓冲区已满时才接收数据 难道以后的一切就不应该失去吗 也许会出现数据包碎片 数据包结构 udp headers
  • 使用 Python 查找 LAN 上的活动节点

    我正在创建一个与 Python 2 7 和 Windows 中的 IP Messenger 相同的 Messenger 我想要与 IP Messenger 使用的功能相同的功能查找通过 LAN 运行相同软件的系统但我无法理解这项技术 有人可
  • 如何从 DatagramPacket 中检索字符串[重复]

    这个问题在这里已经有答案了 下面的代码打印 B 40545a60 B 40545a60abc exp 但我想打印abc 以便我可以从接收系统检索正确的消息 public class Operation InetAddress ip Data
  • python 中的原始套接字和 sendto

    我正在努力将 scapy 与twisted 集成 但我在 OSX 上遇到了这个非常奇怪的错误 我似乎无法弄清楚 基本上我无法通过原始套接字发送有效的 TCP 数据包 包括 IP 标头 这就是我正在做的 import socket from
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • Kubernetes,无法访问其他节点服务

    我正在 3 个带有 CentOS 7 的 VirtualBox 虚拟机 1 个 master 和 2 个 minions 中使用 Kubernetes 不幸的是安装手册说的是这样的every service will be accessib
  • Java 客户端到服务器未知来源

    我有一个简单的乒乓球游戏 需要通过网络工作 服务器将创建一个带有球和 2 个球棒位置的游戏 当客户端连接到服务器时 服务器将创建一个名为 PongPlayerThread 的新类 它将处理客户端到服务器的输入和输出流 我的服务器工作100

随机推荐

  • 应用程序可以在 Android 和 IOS 模拟器中运行,但在发布后不能运行

    Problem 我创建了一个应用程序 它是 MQTT 代理客户端 当我使用 iOS Android 模拟器进行开发时 我与代理的连接工作正常 但是 当我发布 apk 版本时 我的应用程序无法连接 它有套接字问题 AMQJS0007E 套接字
  • 如何在Python中使用OpenSSL从pfx文件中提取密钥?

    我需要签署一份xml与certificate and key from a pfx file 换句话说 我有一个 pfx 文件 我需要从其中提取pem an key签署我的xml 我发现这个脚本可以从 pfx 中提取笔和密钥 但出现错误 i
  • 任意多边形的宽度

    我需要一种方法来表征二维点集的大小 这样我就可以根据视口的比例来确定是否将它们渲染为空间中的单个点或代表性多边形 我已经有一个算法来计算该集合的凸包以生成代表性多边形 但我需要一种方法来表征其大小 一个明显的衡量标准是凸包上点之间的最大距离
  • 子类化 beautifulsoup html 解析器,出现类型错误

    我使用 beautifulsoup 很棒的 html 解析器编写了一个小包装器 最近 我尝试改进代码并使所有 beautifulsoup 方法直接在包装类中可用 而不是通过类属性 我认为子类化 beautifulsoup 解析器将是实现此目
  • 使用 CoreGraphics 在视网膜显示屏上绘图 - 图像像素化

    在我的 iOS 应用程序中 我尝试使用 CoreGraphics 绘制曲线 绘图本身工作正常 但在视网膜显示器上 图像是使用相同的分辨率绘制的 并且像素不会加倍 结果是像素化图像 我正在使用以下函数进行绘图 void touchesMove
  • 如何全局更改Android首选项图标颜色

    我已经为我的所有首选项设置了平面图标 我想全局更改该图标的颜色 当我尝试下面的代码时 它甚至改变了工具栏中的后退按钮颜色 我只想全局更改首选项图标色调 预先感谢
  • C++ 抽象类不能有带有该类参数的方法

    我创建了这个 h 文件 pragma once namespace Core class IComparableObject public virtual int CompareTo IComparableObject obj 0 但编译器
  • django.core.exceptions.ImproperlyConfigured:无法使用视图名称“用户详细信息”解析超链接关系的 URL

    TL DR 我收到此错误 但不知道原因 django core exceptions ImproperlyConfigured 无法使用视图名称 user detail 解析超链接关系的 URL 您可能未能在 API 中包含相关模型 或者错
  • 关闭移动 Safari 中的表单助手?

    当在触摸屏设备上运行时 在我的情况下是iPhone 但我认为它在其他设备上也会这样做 当弹出表单字段的虚拟键盘时 键盘顶部会添加导航按钮 上一个 下一步 完成 有时是 自动填充 这显然是Mobile Safari 的 表单助手 我觉得这是多
  • 哪些客户端内缓存选项适合 Cassandra 和 Java?

    我目前正在构建一个必须能够处理每秒数万次写入的系统 我或多或少决定使用 Apache Cassandra 作为持久层 并将使用 Java 作为应用程序层 但在某些情况下 我需要以在几秒钟内获取任何更改的方式快速访问数据 每次我需要检查这些数
  • 使用 add() 方法添加片段不会隐藏以前的片段

    使用 add 方法添加新片段时 我遇到 意外行为 我想在 FrameLayout 上添加一个新片段 但是当我这样做时 前一个片段仍然可见 这是使用 add 方法时的预期结果吗 是因为我使用的是 FrameLayout 并且 add 方法只是
  • 当 MasterPage 位于根文件夹中时在子文件夹中使用 JQuery

    我试图在 ASP NET 中名为 samples 的子文件夹中使用 jquery 库 其中母版页位于根目录中 目前 对 jquery 脚本的引用位于母版页的 head 标签中 如果我创建的页面也在根目录中 则一切正常 如果我将页面移动到 s
  • C++中为什么派生类的构造函数要初始化虚拟基类?

    我的理解 比如阅读this https www cprogramming com tutorial virtual inheritance html是派生类的构造函数不调用其虚拟基类的构造函数 这是我做的一个简单的例子 class A pr
  • Firebase:更改 Service Worker 的位置

    我正在尝试使用 Firebase 消息传递 网络 Firebase 默认情况下会搜索保存 Service Worker 的文件 firebase messaging sw js Service Worker 脚本应该位于应用程序的绝对路径上
  • 使用 Teradata ODBC 与 Teradata 数据库的 SAS 连接

    我正在尝试连接到 SAS 中的 Teradata 我在机器上设置了 Teradata ODBC 目前我的假设是使用 ODBC 是我访问数据库的唯一方法 这是我的连接命令的语法 库名称 Teradata ODBC dsn dsnname ui
  • python struct.error: 'i' 格式需要 -2147483648 <= number <= 2147483647

    Problem 我愿意使用多处理模块进行特征工程 multiprocessing Pool starmap 但是 它给出了如下错误消息 我猜这个错误消息与输入的大小有关 2147483647 2 31 1 因为相同的代码对于一小部分来说可以
  • 确定 Java 应用程序是否正在通过 RDP 会话运行?

    如何检测我的 Swing 应用程序是否正在从 Windows RDP 会话运行 仅使用 Java 的解决方案是首选 但该应用程序保证可以在 Windows 上运行 所以我可以接受 我认为您必须调用本机 Windows 库才能实现此目的 尝试
  • STL std::map 动态排序

    我知道这可能是一个愚蠢的问题 但我仍然有一个困惑 W r t std map 我已经为地图的动态排序编写了一个自定义谓词 enum OrderingType ASCENDING DESCENDING template
  • Liquid 中按索引为数组赋值

    我处于一个有点复杂的循环中 我需要通过索引为数组分配一个值 这样如果该值已经存在 它将替换它 如果不存在 它将创建它 所以我需要做这样的事情 assign arr split assign arr index value 这不起作用 数组仍
  • 如何找到空闲的 UDP 端口对?

    RTP 规范规定 给定 RTP 流的 RTCP 数据包将在主 RTP 端口 1 的端口上发送 例如 如果视频到达 RTP 端口 9010 那么在端口 9011 上 您可以期待 RTCP 数据包 当我协商单播流 通过 RTSP 协议 时 我必