我可以通过 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
在android和ios之间传输文件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 和 Miracast 之间的真正区别