首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNetService和GCDAsynSocket有什么区别?

NSNetService和GCDAsynSocket有什么区别?
EN

Stack Overflow用户
提问于 2013-05-21 18:52:24
回答 1查看 1.7K关注 0票数 4

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

这个例子中,他们在相同端口上创建一个GCDAsyncSocket和一个NSNetService

代码语言:javascript
复制
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];

NSNetService 能不能有人解释和 GCDAsyncSocket**?**的区别?

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

代码语言:javascript
复制
[service getInputStream:&input outputStream:&output];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-21 19:40:59

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

代码语言:javascript
复制
socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
[socket acceptOnPort:0 error:NULL];

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

代码语言:javascript
复制
socket.localPort

由操作系统选择的端口号,然后由套接字侦听。

NSNetService用于通过Bonjour发布服务:

代码语言:javascript
复制
netService = [[NSNetService alloc] initWithDomain:@"local." type:@"_YourServiceName._tcp." name:@"" port:socket.localPort];
[netService setDelegate:self];
[netService publish];

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16677395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档