我可以通过 WIFI-Direct 在 Android 和 IOS 之间连接吗?

Posted

技术标签:

【中文标题】我可以通过 WIFI-Direct 在 Android 和 IOS 之间连接吗?【英文标题】:Can i connect between Android and IOS By WIFI-Direct? 【发布时间】:2014-04-09 13:05:54 【问题描述】:

我想通过WIFI-DIRECT

androidios之间传输文件

Android 有 WifiP2p 库

IOS 有 MultiPear 连接库 用于 WIFI-DIRECT

但是两个库之间不兼容!!!

互相找不到网络服务

Android和IOS如何连接传输文件????

【问题讨论】:

你不能这样做。 【参考方案1】:

你必须使用NSInputStream & NSOutputStream 来连接安卓。这不是一项简单的任务。

首先,

@property (nonatomic, strong, readwrite) NSInputStream *inputStream;
@property (nonatomic, strong, readwrite) NSOutputStream *outputStream;

然后添加这个方法,

- (void)initNetworkCommunication 

    uint portNo = 5555;
    CFReadStreamRef readStream;
    CFWriteStreamRef writeStream;
    CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", portNo, &readStream, &writeStream);
    inputStream = (__bridge NSInputStream *)readStream;
    outputStream = (__bridge NSOutputStream *)writeStream;

    [inputStream setDelegate:self];
    [outputStream setDelegate:self];

    [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [inputStream open];
    [outputStream open];

你必须调用这个方法来启动 Stream。

从这个流中发送一些东西,这里是一个例子。

- (IBAction)photoClick:(id)sender 

    NSData *newData = UIImagePNGRepresentation([UIImage imageNamed:@"s.jpg"]);
    int index = 0;
    int totalLen = [newData length];
    uint8_t buffer[1024];
    uint8_t *readBytes = (uint8_t *)[newData bytes];

    while (index < totalLen) 
        if ([outputStream hasSpaceAvailable]) 
            NSLog(@"Sending");
            int indexLen =  (1024>(totalLen-index))?(totalLen-index):1024;

            (void)memcpy(buffer, readBytes, indexLen);

            int written = [outputStream write:buffer maxLength:indexLen];

            if (written < 0) 
                break;
            

            index += written;

            readBytes += written;
        
    

【讨论】:

以上是关于我可以通过 WIFI-Direct 在 Android 和 IOS 之间连接吗?的主要内容,如果未能解决你的问题,请参考以下文章

WiFi-Direct 在游戏开发中的使用 (Android)

WiFi-Direct 获取设备名称

Wifi-Direct 和 Miracast 之间的真正区别

wifi-direct端连接到Android上的对等点?

如何在 Wifi-Direct Android 中创建特定组所有者

在 Android 和 Raspberry Pi 3 Linux 之间建立 Wifi-Direct 连接