首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cocoa连接到本地网络上的设备

使用cocoa连接到本地网络上的设备
EN

Stack Overflow用户
提问于 2012-02-01 16:56:22
回答 1查看 1.3K关注 0票数 0

我一直在尝试为我的ipad开发一个应用程序,我可以用它连接到我的本地网络设备,以便毫无进展地获取文件等。我要做的是首先检测网络上的设备,然后通过连接选择要从中浏览文件的设备。

到目前为止,我得到的是

代码语言:javascript
复制
    #import "BrowseForNetworkDevices.h"

@implementation BrowseForNetworkDevices

- (id)init
{    
    self = [super init];

    if (self) 
    {        
        services = [[NSMutableArray alloc] init]; 
        serviceBrowser = [[NSNetServiceBrowser alloc] init];
        [serviceBrowser setDelegate: delegateObject];        

        searching = NO;        
    }

    return self;    
}

- (void)dealloc
{    
    [services release];    
    [serviceBrowser release];
    [super dealloc];    
}



// Sent when browsing begins
- (void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)browser
{    
    searching = YES;    
    [serviceBrowser searchForServicesOfType:@" " inDomain:@"local."];
    [self updateUI];    
}

// Sent when browsing stops
- (void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)browser
{    
    searching = NO;    
    [self updateUI];    
}

// Sent if browsing fails
- (void)netServiceBrowser:(NSNetServiceBrowser *)browser
             didNotSearch:(NSDictionary *)errorDict
{    
    searching = NO;    
    [self handleError:[errorDict objectForKey:NSNetServicesErrorCode]];    
}

// Sent when a service appears
- (void)netServiceBrowser:(NSNetServiceBrowser *)browser
           didFindService:(NSNetService *)aNetService
               moreComing:(BOOL)moreComing
{    
    //[services addObject:aNetService];
    if (![services containsObject:aNetService]) {
        [self willChangeValueForKey:@"services"];
        [services addObject:aNetService];
        [self didChangeValueForKey:@"service"];
    }
    if(!moreComing)        
    {       
        [self updateUI];        
    }    
}

// Sent when a service disappears
- (void)netServiceBrowser:(NSNetServiceBrowser *)browser
         didRemoveService:(NSNetService *)aNetService
               moreComing:(BOOL)moreComing
{
    //[services removeObject:aNetService];
    if ([services containsObject:aNetService]) {
        [self willChangeValueForKey:@"service"];
        [services removeObject:aNetService];
        [self didChangeValueForKey:@"service"];
    }
    if(!moreComing)        
    {       
        [self updateUI];       
    }  
}

// Error handling code
- (void)handleError:(NSNumber *)error
{    
    NSLog(@"An error occurred. Error code = %d", [error intValue]);

   // Handle error here    
}



// UI update code
- (void)updateUI
{

    if(searching)        
    {        
        // Update the user interface to indicate searching
        for(Class obj in services){
            NSLog(@"service found %@", obj);
        }
        // Also update any UI that lists available services

    }    
    else        
    {        
        // Update the user interface to indicate not searching        
    }

}


@end

有没有关于如何执行这类任务的好教程?

提前感谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-01 18:46:07

您需要网络设备和您的iPad使用相同的协议。您需要选择适当的协议。听起来你想要做的是文件传输--有很多协议可以处理这个问题,这些协议都是在iOS库中实现的:

  • WebDAV
  • HTTP
  • FTP
  • SFTP
  • AFP
  • SAMBA

为了让这些设备互相检测,你需要使用苹果的Bonjour之类的设备

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

https://stackoverflow.com/questions/9093107

复制
相关文章

相似问题

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