在iOS上,我使用bonjour查找其他设备,以便在两者之间传输数据。我计划使用NSNetService作为bonjour,CocoaAsyncSocket用于流。
在这个例子中,他们在相同端口上创建一个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];NSNetService 能不能有人解释和 GCDAsyncSocket**?**的区别?
在我看来,我似乎是在同一个端口上创建两个套接字。特别是因为您可以从NSNetService创建输入和输出流。
[service getInputStream:&input outputStream:&output];发布于 2013-05-21 19:40:59
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协议)中发布此信息。
https://stackoverflow.com/questions/16677395
复制相似问题