如何找到空闲的 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 端口对? 的相关文章

  • 提高UDP可靠性

    我正在构建一个基于 UDP 的小型服务器 服务器基于 Net并使用它自己的Socket类 我通过 ReceiveMessageFromAsync 和异步发送使用完成端口 我的问题是我失去了大约 5 10 的流量 现在我明白这是正常的 但是有
  • Rails 是否支持侦听 UDP 套接字的简洁方式?

    在 Rails 中 集成更新模型某些元素的 UDP 侦听过程的最佳方式是什么 特别是向其中一个表添加行 简单的答案似乎是在同一进程中使用 UDP 套接字对象启动一个线程 但不清楚我应该在哪里执行适合 Rails 方式的操作 有没有一种巧妙的
  • 在 PowerShell 中通过 UDP 发送和接收数据

    我正在尝试编写一个脚本来使用 PowerShell 进行测试和应用 测试应包括通过 UDP 向远程服务器发送字符串 然后读取该服务器的响应并对结果执行某些操作 我需要的唯一帮助是脚本的中间两个步骤 发送字符串 然后 接收响应 在端口 UDP
  • 在 Linux/Ubuntu 计算机上通过 Python/Django 设置网络设置

    我正在为嵌入式计算机开发一个简单的网络界面 计算机将附带一个静态默认 IP 然后需要由可能不懂技术 Linux 的安装技术人员进行更新 基本上我需要从 Django 应用程序更改以下系统设置 IP地址 Subnet 默认网关 DNS 服务器
  • 除了 iptables 之外还有数据包管理实用程序吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Linux 实用程序 它可以根据一组规则更改网络数据包的有效负载 理想情况下 我会使用
  • 如何在Windows Phone 7中获取Wi-Fi和移动网络参数?

    我的应用程序需要以下移动网络参数 MCC 移动国家代码 MNC 移动网络代码 LAC 位置区域代码 CID 小区标识符 细胞信号强度 对于 Wi Fi MAC地址 信号强度 我还需要两个变体的设备 IP 地址 Windows Phone 7
  • UDP 广播发送失败:在 Linux 2.6.30 上“网络无法访问”

    我用udp广播写了一个程序 代码段如下 struct sockaddr in broadcast addr socklen t sock len sizeof broadcast addr bzero broadcast addr sock
  • 在我的网络上的其他计算机上查看我的 IIS 托管站点

    在家里 我有一个包含两台机器的简单网络设置 在一台机器上 我有一个使用 IIS7 托管的网站 而不是标准localhost index htm地址我已经添加了一个条目HOSTS将本地 IP 127 0 0 1 指向该域的文件 www mys
  • 为什么 TCP 段中的 SYN 或 FIN 位会占用序列号空间中​​的一个字节?

    我试图理解这种设计背后的基本原理 我浏览了一些 RFC 但没有发现任何明显的东西 这并不是特别微妙 这样 SYN 和 FIN 位本身就可以被确认 因此如果丢失则可以重新发送 例如 如果连接关闭而没有发送更多数据 那么如果 FIN 没有发送任
  • 我如何知道我的 iOS 应用程序的蜂窝网络访问是否被禁用?

    我有一个 iOS 应用程序 它在应用程序启动时发出一些小型网络请求 资源更新等 如果用户在 iOS 设置中关闭应用程序的蜂窝网络访问 他们每次启动时都会收到 iOS 的有关网络使用情况的提示 有没有办法以编程方式知道此应用程序的蜂窝数据已被
  • Vagrant - 使用私有接口时如何配置 vagrant ssh?

    我有一个包含 3 个虚拟机的多虚拟机 vagrantfile 设置 其中两个虚拟机的 NAT 网络接口已禁用 并且仅在内部接口上使用静态 IP 副作用是我无法再跑步vagrant ssh foo连接到虚拟机 mode ruby vi set
  • 如何从 Gforth 网站读取原始代码?

    我想要一个像这样的词 read site add n buff max n flag 其中 add n 是站点名称缓冲区 buff max 是应读取 ASCII 文本的缓冲区 n 是读取的字节数 flag如果操作成功则为 true 这在 L
  • 互联网 RFC 数据包图中预期的位(不是字节)顺序是哪个

    我正在我的家庭有线网络上解析 ICMPv6 数据报 但在特定 RFC 中找不到对位排序约定的明确提及 多字节字段是网络顺序的 但是字节内的位又如何呢 机器是按字节寻址的 但网络硬件对位进行序列化 在图表中 8 位字段 左侧 的一位最终位于无
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • 更改 TFS 构建代理的身份

    我们有一个运行集成测试的 TFS 构建代理 其中一些测试会调用 Internet 上的 Web 服务 我们的网络使用代理与互联网通信 由于构建代理在网络服务上的身份下运行 并且网络服务的设置未配置为使用代理 因此测试失败 我该如何执行以下操
  • 如何在 NLog 中记录网络目标的异常

    我正在使用NLog http nlog project org日志框架 并尝试获取任何 UDP 记录器应用程序中显示的异常和堆栈跟踪信息 例如Sentinel http sentinel codeplex com and Log2控制台 h
  • http://localhost:8080 未重定向到 opensso 登录页面

    我的 Liferay Tomcat 服务器在端口 8080 上运行 当我尝试通过输入 url 从服务器访问应用程序时http localhost 8080 它没有重定向到登录页面 而是给我错误 The Connection to abc x
  • 从java小程序获取正确的本地IP地址

    我想从我的 java 小程序确定本地 IP 地址 问题是当同一台机器上有多个 IP 地址时 该机器具有 LAN 和互联网连接 掌上电脑 VMWare 这是我的测试 public static void main String args tr
  • 您使用什么来通过其自定义协议来测试(功能/负载/压力)您的网络服务?

    我最近创建了一个回合制游戏服务器 可以接受数十万个并发客户端连接 长话短说 Linux 上的 epoll 通信基于简单 定制 基于线路的协议 该服务器允许客户端连接 寻找游戏比赛中的其他玩家 玩所述游戏 发送动作 聊天消息等 并在游戏结束时
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac

随机推荐

  • 应用程序可以在 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 协议 时 我必