问题标签 [network.framework]

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 投票
2 回答
1393 浏览

ios - Swift Network.framework WebSocket 握手 nil 返回

我正在尝试使用新的 Network.framework 连接到 WebSocket,但面临来自服务器的零握手响应。

(是的,我知道红蜘蛛存在,但它不支持代理/移动用户在网络接口之间切换)

我的测试代码:

这是零响应和连接断开,而不是从服务器获取升级握手响应,下面带有控制台日志:

谁能指导我如何使用 Apple 新的 Network.framework?将不胜感激!

更新1

  • 我的错,我现在可以使用.asciiencoding 而不是.utf8.

  • 但我仍然有连接断开Connection reset by peer。升级到 WebSocket 后如何保持连接?

0 投票
1 回答
968 浏览

ios - 使用 TLS 的 NWConnection 在 Swift 中失败

我能够像这样使用 tls 连接到公共 wss:

现在我正在尝试连接到专用网络中的 wss websocket,但我遇到了一些错误。这是我的代码:

这些是错误:

[BoringSSL] boringssl_context_alert_callback_handler(3747) [C1.1:1][0x7fe945708390] Alert level: fatal, description: certificate unknown
[BoringSSL] boringssl_context_error_print(3699) boringssl ctx 0x600001ec9500: 140639868076392:error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED: /BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl_Sim/boringssl-109.202.1/ssl/handshake.cc:372:
[BoringSSL]boringssl_context_get_error_code(3519) [C1.1:1][0x7fe945708390] SSL_AD_CERTIFICATE_UNKNOWN

客户端失败并出现错误:-9808:可选(错误的证书格式)

我需要添加特殊选项才能在此处连接吗?

另外,我看到 wss 可以工作,因为我能够连接 SocketRocket,但我想连接 NWConnection

谢谢。

0 投票
1 回答
382 浏览

swift - Network.framework:nw_read_request_get_maximum_datagram_count

我正在尝试让 UDP 服务器在 Network.framework 中运行。但是,每当我设法连接客户端和服务器时,一段时间后我都会收到错误消息nw_read_request_get_maximum_datagram_count

我尝试使用 Timer 和 DispatchQueue 进行循环,但最终服务器或客户端因上述错误而崩溃。

客户

服务器

我想保持服务器和客户端之间的持续连接,直到客户端或服务器手动断开连接。

0 投票
1 回答
1949 浏览

swift - 使用 Network.framework 检测客户端与 UDP 断开连接

我正在尝试确定在使用 Network.framework 时 UDP 客户端何时停止向服务器发送数据包

我已经构建了一个小示例,该示例演示了服务器无法将状态更改.cancelled为客户端连接被取消时的状态。

示例客户端:

示例服务器:

在服务器运行的同时运行客户端时,客户端发送和接收一个数据包,然后被取消。客户端打印Connection cancelled。但是,服务器上 NWConnection 的状态不会改变,connection.receiveMessage当没有数据从客户端读取时,会静默失败。

我希望服务器连接的状态会改变或receiveMessage调用其完成处理程序,尽管没有数据存在(data毕竟Data?

因此,我不确定在 Network.framework 上使用 UDP 服务器时如何检测客户端何时停止发送数据包。我应该如何检测“断开连接”的客户端?

0 投票
1 回答
289 浏览

ios - 如何将带有图像数据的 CMSampleBuffer 转换为适合通过网络连接发送的格式?

我想通过网络连接发送视频流的帧,所以我实现了 AVCaptureVideoDataOutputSampleBufferDelegate 函数:

我应该如何将 CMSampleBuffer 转换为 Data 作为 NWConnection 函数:

我用于网络的期望 Data 作为其内容参数?

0 投票
1 回答
238 浏览

ios - Network.Framework的iOS后台使用

我在 Network.Framework 上使用 TCP 编写了一个简单的基于 WiFi 的应用程序,它每 10 秒从特定端口上的远程服务接收大约 80 个字节。我想在前台和后台将此数据写入文件。

问题是,如果有/允许/最符合此要求,哪种背景模式?

所有的智慧都欣然接受。

0 投票
1 回答
175 浏览

swift - 如何使用苹果的网络框架向所有链接本地节点发送 UDP 消息?

当我尝试建立连接时,它会从 waiting(POSIXErrorCode: Network is down) 变为准备状态。但它永远不会进入就绪状态,我不知道如何发送数据报。

如何向所有链路本地节点发送 UDP 消息?

0 投票
1 回答
577 浏览

swift - Swift Network.framework:为没有 IP 连接的以太网接口获取 NWInterface

WWDC2019 的“网络进步”演讲中有这个NWEthernetChannel用于监控自定义(非 IP)协议的示例。这是针对 MacOS 的。

对于我的应用程序,我需要使用 aNWEthernetChannel来监控没有 IP Internet 连接(但它确实有到交换机的物理链路)的以太网链路上的自定义协议(实际上是 Cisco 发现协议和/或链路层发现协议)。如果 NWPath 是通往 Internet 的有效路径,NWPath 似乎只会给我一个 NWInterface 结构。

如何NWInterface在没有有效 Internet 路径的情况下获取 Mac 上的结构列表?

在我的特定用例中,我只对.wiredEthernet.

NWInterfaces在一个盒子上得到一个完整的数组这样简单的东西就足够了,但到目前为止,NWInterfaces我发现“出售”的唯一方法是 with NWPathMonitor,这似乎需要 IP 连接。

0 投票
0 回答
98 浏览

ios - Swift Network.framework (websocket):读取服务器设置的响应头

我试图弄清楚 ws 客户端如何在握手期间读取 WebSocket 服务器设置的其他标头。

Websocket 服务器(使用 构建NWProtocolWebSocket

Websocket 客户端(使用 构建NWProtocolWebSocket

我知道NWProtocolWebSocket.Metadata有一个,additionalServerHeaders但我不知道如何访问它。

有什么帮助吗?谢谢

0 投票
1 回答
351 浏览

swift - 如何为 Network.framework 编写 NWProtocolFramer,使用分隔符将流拆分为帧?

我尝试使用以下代码创建一个成帧器,它将 ASCII 字节流拆分为由管道 ascii 字符分隔的帧:"|".

问题是,从我得到一个不以 结尾的块的那一刻起"|",成帧器就会卡在那个块上。因此,在这个不完整块之后的其他块永远不会完全到达framer.parseInput(...)调用中。因为它总是解析块,minimumIncompleteLength因此永远不会到达下一个点"|"

下面是这个问题的简单重现:

  1. 创建 TCP 服务器
  2. 设置服务器,以便在客户端连接时发送消息块。
  3. 使用上面的成帧器连接到服务器(在 1. 中创建)。
  4. 开始接收消息。

SWIFT代码:

结果是:

请注意,客户端永远不会收到第四条和第五条消息。我应该如何编写 Framer 以便在传入的不完整块之后接收消息?


参考