问题标签 [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 回答
12959 浏览

ios - 如何修复“nw_connection_receive_internal_block_invoke”(控制台)

我正在 Xcode 中配置一个新的 Firebase 应用程序,但在控制台中重复打印“nw_connection_receive_internal_block_invoke [C1] Receive reply failed with error 'Operation cancelled'”。我应该怎么做才能解决这个问题?

这是在 Xcode 11 Beta 3 中,我已经尝试完全创建一个新项目,因为原始项目是从旧版本的 Xcode 创建的,但即使我所做的只是运行,我仍然会在控制台中重复打印此错误配置后一次。

我希望在控制台中看不到任何错误,但是这个错误被打印了很多次。

0 投票
1 回答
2069 浏览

ios - 为什么网络状态没有迅速更新?

我正在使用 iOS 12 中引入的新“网络”库,但我无法弄清楚为什么在用户连接后网络状态没有更新为 .satisfied。

这是到目前为止的代码:

为了在模拟器中复制丢失的连接情况,我在视图加载之前关闭了 wifi 连接,当警报出现时,点击重试。令人惊讶的是,重试后的状态仍然是 .unsatisfied。为什么状态没有更新?

目标是点击“重试”,如果用户仍未连接,则继续显示警报,当用户连接时,点击重试警报应该被解除。

为了进行简单的网络监视器设置,您可以查看本教程: https ://medium.com/@rwbutler/nwpathmonitor-the-new-reachability-de101a5a8835

请注意,我在实例化 NWPathMonitor() 时没有指定网络类型,因此它会检测所有类型的连接。

0 投票
1 回答
1659 浏览

objective-c - How to use Network framework in Objective-C (example in Swift)

Trying to make TCP connection with Google mail server through IMAP protocol with "Network framework" (Swift), but I got an error. I got code from this (wwdc2018) video.

My console displays:

I am HERE

ERROR - -65554: NoSuchRecord

UDPATED: Thanks to @arnt I remembered that host must be "imap.gmail.com", now works fine!

The main goal is to create TCP connection with Google mail server through IMAP protocol with "Network framework", but on Objective-C.

0 投票
1 回答
411 浏览

ios - 文件描述符不适用于 Objective-C 中的 dispatch_read() 和 dispatch_write()(创建电子邮件客户端)

我想创建使用 IMAP 协议的电子邮件客户端。我正在使用 Apple 的网络框架来创建与 imap.gmail.com 的 TCP 连接。

剧透!我使用了官方教程(Implementing netcat with Network Framework)。

我的应用程序中有非常简单的界面:

  • 电子邮件占位符
  • 密码占位符
  • 登录按钮

所有方法都写在 ViewController.m

当我按下登录按钮时:

有人会认为没有必要将“fd”变量传递给我的连接方法。我想你是绝对正确的,但我在文件描述符方面遇到了一些问题,这是我最后一次尝试了解发生了什么。

然后我尝试开始连接,一切都在那里。

我在 Xcode 中的控制台只显示:“连接已准备好”。

如您所见,我们称之为“receive_loop 方法,带有 3 个参数”,我们来看看这个方法:

现在最有趣的事情是:起初,我在 dispath_write() 函数中使用 STDOUT_FILENO 而不是“fd”或(非常重要的)“file.fileDescriptor”。好吧,当我使用 STDOUT_FILENO 时,我的控制台只是打印类似“* OK Gimap 准备好接受来自 109.252.29.37 m5mb106667441ljg 的请求”的内容如您所见,我正在尝试将其写入我的“fd”或“文件”变量中(两者都不起作用,尝试读取 fd 或文件后我有“NULL”)。

所以,这就是我尝试发送信息的方式,但这没关系,因为我无法写入我的 fd,所以我无法将数据发送到 imap.gmail.com ......

我的 send_loop 方法:

请有人帮助我!

更新: receive_loop方法工作正常,我明白了,当打开 tmp 文件夹并看到我的文件内容为:“* OK Gimap 准备好接受来自 109.252.29.37 m5mb106667441ljg 的请求”,但我无法使用send_loop方法读取此文件...

0 投票
4 回答
318 浏览

swift - 当 SwiftUI 视图被关闭时,如何发送最后一条消息并关闭套接字?

我有一个带有处理 tcp 通信的ObservedObject的SwiftUI 工作表视图,当此工作表被解除时,我需要它发送最后一条 tcp 消息,然后关闭套接字。onDisappear事件似乎永远不会被触发(编辑:找到了罪魁祸首,因为我正在使用UIHostingController呈现工作表,仍然需要解决方案)我已经尝试将它放在表单、导航视图中,尝试创建一个新堆栈为此,没有任何效果。所以我尝试使用我的ObservedObject deinit ,但是如果我在关闭视图后尝试快速重新打开视图,这会给我一个糟糕的访问错误。

从我使用的连接类Network Framework

编辑:添加下面的视图代码

这些onDisappear 都不适合我,ScheduleForm 行中的行是唯一一个甚至会为我触发的行,但是它会在创建工作表时触发,并且每次我滚动一行时都会触发,但在我关闭工作表时不会触发.

0 投票
1 回答
664 浏览

swift - 如何从 NWEndpoint.service 枚举案例中解析地址和端口信息(如果可能)

目前我正在使用NetServiceBrowser查找 Bonjour 服务并解析相应的地址和端口。

为了简化我偶然发现的代码,NWBrowser它似乎提供了一个非常简单的界面来处理 Bonjour 发现。

但是,browseResultsChangedHandler发送回包含 enum case 端点的结果和更改service。我正在尝试从结果中获取地址和端口信息,但似乎NWEndpoint必须是枚举类型.hostPort。

理想情况下,我会使用端点连接到服务器NWConnection,但是,我正在使用另一个不NWEndpoint直接处理的库。

是否有(简单的)方法可以从结果中获取地址和端口信息NWEndpoint.service

0 投票
0 回答
183 浏览

ios - 使用 Apple 的网络框架,有没有办法进行无连接 UDP?

我正在尝试建立对等数据报交换。是的,我正在打孔并使用远程眩晕服务器。不幸的是,我发现我必须使用 GCDAsycnUdpSocket,它虽然是一个很好的库,但不如 Network 方便。但是,您似乎必须创建与网络框架的绑定连接才能发送,这稍后会导致 ICMP 拒绝。现在,我似乎需要使用 GCDAsycnUdpSocket,在那里我可以进行无连接发送。但是,我想我会伸出手来看看我是否忽略了网络框架中的某些东西,这些东西可以让我在不创建绑定连接的情况下发送/接收。顺便说一句,我确实尝试在连接创建中将 includePeerToPeer 设置为 true,但这似乎没有帮助。

0 投票
1 回答
201 浏览

openssl - 带有弱密码的 iOS 13 证书固定停止工作但在 iOS 12 中工作正常

我很好奇通过 NWProtocolTLS.Options() 传递弱密码。因为它在 iOS 12 中运行良好,但在 iOS 13 Apple 上我猜他们做了一些改变,所以它停止了。

这里的一件事是:OpenSSL 如何使用弱密码(TLS_DHE_RSA_WITH_AES_256_GCM_SHA384)并建立连接。以及为什么不使用 iOS 13 Network.framework。

基本上,我的 Socket 服务器已经被弱密码TLS_DHE_RSA_WITH_AES_256_GCM_SHA384冻结了,这是我使用 WireShark 通过 OpenSSL 从 Server Hello 捕获的。所以现在我通过以下方法使用 iOS 13 传递这个密码,但它不起作用。

注意:我们已经提出了反馈助手查询,但我们仍在等待他们。这不是 Web Socket,我们通过服务器 Wifi 热点连接。

不知何故,我们在 iOS 的 OpenSSL 库(https://github.com/levigroker/GRKOpenSSLFramework)的帮助下解决了这个问题,但是在长数据轮询和字节缓冲机制之后,在处理更长的数据时面临很多问题。

在 OpenSSL iOS App 中查看 Client Hello 后,它通过了 86 个密码及其工作。

但是在传递客户端 Hello 的 iOS Network.framework 中,它通过了 36 个密码并且它不起作用。

如果有人想查看 WireShark 数据包,请添加评论,我将进一步附上。

所以任何想法或帮助表示赞赏!

0 投票
1 回答
206 浏览

ios - iOS _nw_parameters_configure_protocol_disable 直接调用

我正在尝试在 iOS Kotlin/Native 通用模块中使用 TCP 套接字。

根据Apple 的文档,要打开nw_connection_t,您只需:

但是,当我在 iOS 应用程序中运行此模块时,我收到以下错误:

parameters.hApple 的 Network.framework 中的标头包含:

...所以当然_nw_parameters_configure_protocol_disable 是直接调用的。

知道我做错了什么吗?

0 投票
1 回答
51 浏览

ios - 如何选择哪一部手机是服务器,哪一部是客户端?

我现在正在开发一个应用程序,其中(我将把它放在事物的网络方面)在将一部手机放在顶部之后,两个设备将相互传输数据(很可能是一些 JSON 数据,也可能是图像)其他。我已经制定了设备检测逻辑,但现在我陷入了启动:两部手机如何知道哪一部首先是客户端,哪一部是服务器,然后切换?我正在使用 Apple 的网络框架

也许两个设备都选择一个随机数,0或1,然后将结果与另一台设备通信,其中有0的设备是服务器,有1的设备是客户端?如果他们都得到相同的号码重新开始?我在网络方面没有太多经验,所以我真的不确定。

PS:我尝试使用MultipeerConnectivity框架,因为它提供了我正在寻找的点对点功能,但它没有得到 Apple 的积极支持(这意味着不利于未来的验证)并且不提供可定制性我正在寻找,这就是为什么我决定使用网络框架向下一层,它受到积极支持且易于交互。