我应该使用哪个高级 API 来管理 iOS 上的 UDP 套接字? [关闭]

2024-03-18

在章节“使用套接字和流 https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/UsingSocketsandSocketStreams.html“ 的 ”网络编程主题概念指南 https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012546-SW1”,苹果说:

Note:POSIX 网络不会激活 iOS 上的蜂窝无线电。 因此,通常不鼓励使用 POSIX 网络 API iOS。

也在章节“网络技巧和陷阱 https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/CommonPitfalls/CommonPitfalls.html#//apple_ref/doc/uid/TP40010220-CH4-SW20“ 的 ”网络概述指南 https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010220-CH12-BBCFIHFH”,苹果说:

在iOS中,直接使用POSIX函数或CFSocket来使用套接字 不会自动激活设备的蜂窝调制解调器或按需激活 VPN。

好的,所以在 iOS 上既不应该使用 POSIX 套接字,也不应该使用 CFSocket,后者只是 POSIX 套接字的一个薄包装,它通过 RunLoops 支持异步网络。没问题。但是,如果您需要一个 API,您应该使用什么 API?UDP套接字?

Apple 在本章中进一步说道“网络技巧和陷阱 https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/CommonPitfalls/CommonPitfalls.html#//apple_ref/doc/uid/TP40010220-CH4-SW20“ 的 ”网络概述指南 https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010220-CH12-BBCFIHFH":

在连接到主机之前避免解析 DNS 名称

因此,理想情况下应该有一个用于管理 UDP 套接字的 API,而不是 POSIX API 和 CFSocket,它接受 DNS 名称而不是 IP 地址作为目标地址。

也许我是瞎子,但我找不到任何这样的 API。有任何想法吗?

使用任何第三方API(不是来自Apple)并不有趣,因为这样的API必须基于Apple API,在这种情况下我可以直接使用这个Apple API。围绕 POSIX 套接字编写我自己的包装器 API 是小菜一碟,我之前编写过很多套接字包装器,我已经知道所有令人讨厌的陷阱。但我不会使用 POSIX API,这是这里最初的问题。


我向 Apple 询问了完全相同的问题,他们的答复或多或少是没有任何用于 UDP 套接字的高级接口。无论 Apple 在其指南中怎么说,在使用 UDP 时,要么直接使用 POSIX 套接字,要么结合使用异步管理器,例如poll() or select(),或者创建一个 POSIX 套接字(也许使用bind() and/or connect()根据需要在其上),然后将其包裹成CFSocket对象使用CFSocketCreateWithNative()获得 RunLoop 集成。这是现有的最好的 API。所有更高级别的 API 均设计为仅与 TCP 一起使用。

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

我应该使用哪个高级 API 来管理 iOS 上的 UDP 套接字? [关闭] 的相关文章

  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • XCode 7 中的 AWSS3TransferManagerUploadRequest

    我今天升级到 Xcode 7 Swift 2 0 我的项目正在使用 CocoaPods 我正在 POD 文件中导入所有与 AWS 相关的文件 我已经设置了桥接标头 并导入了 Amazon 告诉我的所有文件 在升级到 Swift 2 0 之前
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • 如何观察UserDefaults的变化?

    我有一个 ObservedObject在我看来 struct HomeView View ObservedObject var station Station var body some View Text self station sta
  • NSUserDefaults 多久同步一次?

    的文档NSUserDefaults说synchronise方法被定期调用 但没有提及频率 10分钟的谷歌搜索没有发现任何信息 发生的频率是多少synchronise方法调用 这是一个未公开的实现细节 可能甚至不是一个恒定的时间间隔 但是 您
  • 互联网 RFC 数据包图中预期的位(不是字节)顺序是哪个

    我正在我的家庭有线网络上解析 ICMPv6 数据报 但在特定 RFC 中找不到对位排序约定的明确提及 多字节字段是网络顺序的 但是字节内的位又如何呢 机器是按字节寻址的 但网络硬件对位进行序列化 在图表中 8 位字段 左侧 的一位最终位于无
  • 在 IOS 中从 iPhone 删除资产(图片或视频)

    我正在开发一个 Iphone 应用程序 我可以使用 Assetslibrary 枚举资产并将它们加载到表视图中 用户可以在应用程序中删除一行 图片 视频 但如何直接从我的应用程序更新 Iphone 相册 否则 刷新时 表视图将重新加载之前删
  • 从 NavigationController 中删除 ViewController 后 AVPlayer 继续播放

    因此 我在项目中使用 ARC 当我添加 AVPlayerLayer 时 它工作得很好 但当我从 UINavigationItem 中弹出 UIViewController 时 视频继续在后台播放 有谁知道你会如何处理这个问题 这似乎是一件很
  • 启动深色或浅色模式的图像

    如何为深色模式和浅色模式选 择一组不同的启动图像 我有一个 LaunchImages 集 当应用程序启动时 会显示一个图像 对于浅色模式 这似乎不错 但是如果我尝试在设置为深色模式 iOS 13 的设备上打开我的应用程序 则该图像看起来很糟
  • 重叠的装载机圆

    我试图重现苹果为应用程序 活动 制作的重叠圆圈 见下图 如果您使用标准贝塞尔路径 起始 结束位置将仅在 0 到 2PI 之间产生影响 例如 如果您尝试填充 4PI 即使使用一些阴影 则无法模拟重叠加载 如何制作类似于苹果解决方案的东西来创建
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 从 iOS 13 开始安排 iOS 后台任务

    我正在实现用于更新数据的BackgroundTasks 框架 但我遇到了以下问题 无法计划刷新App 错误域 BGTaskSchedulerErrorDomain代码 1 空 无法安排数据提取 Error Domain BGTaskSche
  • 以弯曲格式显示文本

    我正在寻找以曲线格式绘制一些文本 我使用哪个控件并不重要 UITextField UILabel or UITextView 我只想显示如图所示的文本 仍在寻找解决方案 请帮忙 查看此链接 https nodeload github com
  • 沙盒尝试恢复消耗性 IAP

    我一直在尝试在 iOS 上测试一些消耗性 IAP 但遇到了一个奇怪的错误 弹出一条警报 其中包含以下文本 此应用内购买已被购买 它将恢复为 自由的 环境 沙盒 我已经检查过 并且确定我的 IAP 可以在 iTunesConnect 中使用
  • UITableView 滑动删除 iOS 上的手势冲突

    我的手势识别器有问题 我的目标是在表视图中实现使用滑动删除 但我认为其他手势是相互冲突的 我正在使用这个库romonthego REFrostedViewController https github com romaonthego REF
  • iOS 解决方法:在没有 CSS 属性的情况下平滑滚动 滚动行为:平滑?

    编辑 我找到了一个 jQuery 解决方案 https codepen io chriscoyier pen dpBMVP https codepen io chriscoyier pen dpBMVP这个确实可以在 iOS 上运行 我想
  • 如何将 LC_LOAD_DYLIB 命令插入 Mach-O 二进制文件或将静态库加入现有二进制文件 (IOS)

    这是我第一次在 stackoverflow 上提问 我很绝望 我的任务是加载 dylib 或将静态库加入到 IOS 设备的现有可执行文件中 我将使用static void attribute constructor initialize v
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图

随机推荐