问题标签 [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.
ios - Swift Network.framework WebSocket 握手 nil 返回
我正在尝试使用新的 Network.framework 连接到 WebSocket,但面临来自服务器的零握手响应。
(是的,我知道红蜘蛛存在,但它不支持代理/移动用户在网络接口之间切换)
我的测试代码:
这是零响应和连接断开,而不是从服务器获取升级握手响应,下面带有控制台日志:
谁能指导我如何使用 Apple 新的 Network.framework?将不胜感激!
更新1
我的错,我现在可以使用
.ascii
encoding 而不是.utf8
.但我仍然有连接断开
Connection reset by peer
。升级到 WebSocket 后如何保持连接?
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
谢谢。
swift - Network.framework:nw_read_request_get_maximum_datagram_count
我正在尝试让 UDP 服务器在 Network.framework 中运行。但是,每当我设法连接客户端和服务器时,一段时间后我都会收到错误消息nw_read_request_get_maximum_datagram_count
我尝试使用 Timer 和 DispatchQueue 进行循环,但最终服务器或客户端因上述错误而崩溃。
客户
服务器
我想保持服务器和客户端之间的持续连接,直到客户端或服务器手动断开连接。
swift - 使用 Network.framework 检测客户端与 UDP 断开连接
我正在尝试确定在使用 Network.framework 时 UDP 客户端何时停止向服务器发送数据包
我已经构建了一个小示例,该示例演示了服务器无法将状态更改.cancelled
为客户端连接被取消时的状态。
示例客户端:
示例服务器:
在服务器运行的同时运行客户端时,客户端发送和接收一个数据包,然后被取消。客户端打印Connection cancelled
。但是,服务器上 NWConnection 的状态不会改变,connection.receiveMessage
当没有数据从客户端读取时,会静默失败。
我希望服务器连接的状态会改变或receiveMessage
调用其完成处理程序,尽管没有数据存在(data
毕竟Data?
)
因此,我不确定在 Network.framework 上使用 UDP 服务器时如何检测客户端何时停止发送数据包。我应该如何检测“断开连接”的客户端?
ios - 如何将带有图像数据的 CMSampleBuffer 转换为适合通过网络连接发送的格式?
我想通过网络连接发送视频流的帧,所以我实现了 AVCaptureVideoDataOutputSampleBufferDelegate 函数:
我应该如何将 CMSampleBuffer 转换为 Data 作为 NWConnection 函数:
我用于网络的期望 Data 作为其内容参数?
ios - Network.Framework的iOS后台使用
我在 Network.Framework 上使用 TCP 编写了一个简单的基于 WiFi 的应用程序,它每 10 秒从特定端口上的远程服务接收大约 80 个字节。我想在前台和后台将此数据写入文件。
问题是,如果有/允许/最符合此要求,哪种背景模式?
所有的智慧都欣然接受。
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 连接。
ios - Swift Network.framework (websocket):读取服务器设置的响应头
我试图弄清楚 ws 客户端如何在握手期间读取 WebSocket 服务器设置的其他标头。
Websocket 服务器(使用 构建NWProtocolWebSocket
)
Websocket 客户端(使用 构建NWProtocolWebSocket
)
我知道NWProtocolWebSocket.Metadata
有一个,additionalServerHeaders
但我不知道如何访问它。
有什么帮助吗?谢谢
swift - 如何为 Network.framework 编写 NWProtocolFramer,使用分隔符将流拆分为帧?
我尝试使用以下代码创建一个成帧器,它将 ASCII 字节流拆分为由管道 ascii 字符分隔的帧:"|"
.
问题是,从我得到一个不以 结尾的块的那一刻起"|"
,成帧器就会卡在那个块上。因此,在这个不完整块之后的其他块永远不会完全到达framer.parseInput(...)
调用中。因为它总是解析块,minimumIncompleteLength
因此永远不会到达下一个点"|"
。
下面是这个问题的简单重现:
- 创建 TCP 服务器
- 设置服务器,以便在客户端连接时发送消息块。
- 使用上面的成帧器连接到服务器(在 1. 中创建)。
- 开始接收消息。
SWIFT代码:
结果是:
请注意,客户端永远不会收到第四条和第五条消息。我应该如何编写 Framer 以便在传入的不完整块之后接收消息?