Ios 使用苹果&x27;s的网络框架,有没有一种方法可以实现无连接UDP?

Ios 使用苹果&x27;s的网络框架,有没有一种方法可以实现无连接UDP?,ios,macos,network-framework,Ios,Macos,Network Framework,我正在尝试建立点对点数据报交换。是的,我在打洞,用远程电击服务器。不幸的是,我发现我必须使用GCDAsycnUdpSocket,它虽然是一个很好的库,但并不像网络那样方便。然而,似乎您必须创建与网络框架的绑定连接才能发送,这将导致ICMP拒绝。现在,我似乎需要使用GCDAsycnUdpSocket,在这里我可以进行无连接发送。然而,我想我应该去看看我是否忽略了网络框架中的一些东西,这些东西可以让我在不创建绑定连接的情况下发送/接收。顺便说一句,我确实尝试在连接创建中将IncludePerOper

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

UDP是一种无连接传输,但网络框架在UDP层的顶部使用了基于连接的抽象。如果你不想要这种连接模式,就不要使用网络框架。我还没有从网络框架中捕获数据包,但如果它在“在线”上运行有任何不同,我会感到惊讶。与UDP传输的连接是纯逻辑的,提供了一个映射,以根据源/目标套接字对将传入数据报路由到适当的NWConnection。如果远端未使用一致的UDP源套接字,则无法使用网络框架。我不认为这完全符合逻辑,我认为正在执行绑定,如果UDP数据包指示其来自与连接的IP不同的IP,则会导致传入数据包被拒绝(ICMP不可访问),至少我观察到了这一点。UDP在网络级别上没有绑定的概念。它是无连接的。网络框架确实在顶部实现了面向连接的抽象。如果连接的一端没有明确的“客户端”角色,而另一端没有明确的“服务器”角色,则不能使用网络框架,因为它需要已知的发送/接收套接字对,以便在会话层传递数据报。如果UDP来自不同的IP,则网络框架将其视为新连接;它必须被传递到具有与其关联的
NWListener
的套接字。它不能作为对上一次发送使用的高端口的“回复”发送。谢谢,我认为这澄清了很多问题,并告诉我不需要使用网络框架进行对等数据交换。UDP是一种无连接传输,但网络框架在UDP层上使用基于连接的抽象。如果你不想要这种连接模式,就不要使用网络框架。我还没有从网络框架中捕获数据包,但如果它在“在线”上运行有任何不同,我会感到惊讶。与UDP传输的连接是纯逻辑的,提供了一个映射,以根据源/目标套接字对将传入数据报路由到适当的NWConnection。如果远端未使用一致的UDP源套接字,则无法使用网络框架。我不认为这完全符合逻辑,我认为正在执行绑定,如果UDP数据包指示其来自与连接的IP不同的IP,则会导致传入数据包被拒绝(ICMP不可访问),至少我观察到了这一点。UDP在网络级别上没有绑定的概念。它是无连接的。网络框架确实在顶部实现了面向连接的抽象。如果连接的一端没有明确的“客户端”角色,而另一端没有明确的“服务器”角色,则不能使用网络框架,因为它需要已知的发送/接收套接字对,以便在会话层传递数据报。如果UDP来自不同的IP,则网络框架将其视为新连接;它必须被传递到具有与其关联的
NWListener
的套接字。它不能作为对上一次发送使用的高端口的“回复”发送。谢谢,我认为这澄清了很多问题,并告诉我不需要使用网络框架进行对等数据交换。