我正在使用 NSSInputStream 和 NSOutputStream 发送和接收数据,在服务器中(我命名它):打开流向客户端发送数据
- (BOOL)openStreams
{
//NSLog(@"SERVER: Open stream");
[self.delegate callbackMessageFromServer:@"SERVER: Open stream"];
NSURL *url = [[NSBundle mainBundle]URLForResource:@"video.mp4" withExtension:nil];
NSLog(@"path %@",url);
NSData *data =[NSData dataWithContentsOfURL:url];
NSLog(@"data %@",data);
self.inputStream = [NSInputStream inputStreamWithURL:url];
[self.inputStream setDelegate:self];
[self.outputStream setDelegate:self];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.inputStream open];
[self.outputStream open];
return YES;
}
在 - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
switch (eventCode) {
case NSStreamEventHasSpaceAvailable:
{
[self sendData];
}break;
}
- (void)sendData
{
if (self.bufferOffset == self.bufferLimit)
{
NSInteger bytesRead = [self.inputStream read:self.buffer maxLength:kSendBufferSize];
if (bytesRead == -1)
{
NSLog(@"Server : File read error");
// close stream
}
else if (bytesRead ==0)
{
NSLog(@"Server: Sending data successful");
// close stream
}
else
{
self.bufferOffset = 0;
self.bufferLimit = bytesRead;
}
}
if (self.bufferOffset != self.bufferLimit)
{
NSInteger bytesWritten;
bytesWritten = [self.outputStream write:&self.buffer[self.bufferOffset] maxLength:self.bufferLimit - self.bufferOffset];
assert(bytesWritten != 0);
if (bytesWritten == -1)
{
// close stream
}
else
{
self.bufferOffset += bytesWritten;
}
}
}
在客户端,如何接收数据和播放视频?,谢谢