gpt4 book ai didi

ios - NSNetService 和 GCDAsynSocket 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:14 35 4
gpt4 key购买 nike

在 iOS 上,我正在使用 bonjour 查找其他设备,以便我可以在两者之间传输数据。我计划将 NSNetService 用于 bonjour,将 CocoaAsyncSocket 用于流媒体。

this example ,他们在相同的端口上创建了一个GCDAsyncSocket和一个NSNetService:

socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
[socket acceptOnPort:0 error:NULL];

netService = [[NSNetService alloc] initWithDomain:@"local." type:@"_YourServiceName._tcp." name:@"" port:socket.localPort];

谁能解释一下 NSNetServiceGCDAsyncSocket 之间的区别?

对我来说,我似乎在同一个端口上创建了两个套接字。特别是因为您可以从 NSNetService 创建输入和输出流。

[service getInputStream:&input outputStream:&output];

最佳答案

GCDAsyncSocket 用于创建监听服务器套接字:

socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
[socket acceptOnPort:0 error:NULL];

端口号设置为 0,这意味着操作系统选择一个可用端口。

socket.localPort

是套接字随后监听的操作系统选择的端口号。

NSNetService 用于通过 Bonjour 发布服务:

netService = [[NSNetService alloc] initWithDomain:@"local." type:@"_YourServiceName._tcp." name:@"" port:socket.localPort];
[netService setDelegate:self];
[netService publish];

这不会创建另一个套接字,而是将创建的端口号与主机名和服务名一起使用,并在本地网络中发布此信息(使用 Bonjour/mDNS 协议(protocol))。

关于ios - NSNetService 和 GCDAsynSocket 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677395/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com