gpt4 book ai didi

ios - 通过 NSStream 判断连接建立成功和连接断开

转载 作者:行者123 更新时间:2023-12-01 13:04:38 25 4
gpt4 key购买 nike

我正在尝试为 NSStream 编写包装器之类的东西,以使我的生活更轻松。我只想知道什么时候建立连接,什么时候关闭,写一些数据获取接收到的数据。所以我在想这样的事情:

标题:

@interface StreamWrapper : NSObject

- (id)initWithDelegate:(id <StreamWrapperDelegate>)delegate;
- (void)writeData:(NSData *)data;

@end

@protocol StreamWrapperDelegate <NSObject>

@required
- (void)streamWrapper:(StreamWrapper *)streamWrapper didReceiveData:(NSData *)data;
- (void)streamWrapperDidConnect:(StreamWrapper *)streamWrapper;
- (void)streamWrapperDidCloseConnection:(StreamWrapper *)streamWrapper;

@end

类:

@interface StreamWrapper () <NSStreamDelegate>

...
@property (nonatomic, weak) id <StreamWrapperDelegate> delegate;
@property (nonatomic, strong) NSInputStream *inputStream;
@property (nonatomic, strong) NSOutputStream *outputStream;

- (void)closeStreams;
- (void)setAndOpenStreams;

@end

@implementation StreamWrapper

#pragma mark - NSStreamDelegate

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
switch (eventCode) {

case NSStreamEventEndEncountered:
// Should I here close both streams (even if this is called only for one (in or out)) and delegate closed connection?
break;

case NSStreamEventErrorOccurred:
// Should I here close both streams (even if this is called only for one (in or out)) and delegate closed connection?
break;

case NSStreamEventHasBytesAvailable:
// My reading algorithm...
[self.delegate streamWrapper:self didReceiveData:data];
break;

case NSStreamEventHasSpaceAvailable:
// Is this useful for me?
break;

case NSStreamEventNone:
// Is this useful for me?
break;

case NSStreamEventOpenCompleted:
// Should I here delegate successful connection? Should I wait to receive this for both streams? How?
break;

default:
break;
}
}

...

@end

所以...如何实现我将始终知道何时建立连接并且我能够发送和接收数据以及何时断开连接(即使只有一种方式)我应该关闭它并尝试全新的成立?或者做这样的事情的正确方法是什么?

最佳答案

根据Apple's Developer Website

 NSStreamEventNone
No event has occurred.

Available in OS X v10.3 and later.

Declared in NSStream.h.

NSStreamEventOpenCompleted
The open has completed successfully.

Available in OS X v10.3 and later.

Declared in NSStream.h.

NSStreamEventHasBytesAvailable
The stream has bytes to be read.

Available in OS X v10.3 and later.

Declared in NSStream.h.

NSStreamEventHasSpaceAvailable
The stream can accept bytes for writing.

Available in OS X v10.3 and later.

Declared in NSStream.h.

NSStreamEventErrorOccurred
An error has occurred on the stream.

Available in OS X v10.3 and later.

Declared in NSStream.h.

NSStreamEventEndEncountered
The end of the stream has been reached.

Available in OS X v10.3 and later.

Declared in NSStream.h.
  • 另请参阅本文以获取更多信息:

Article : Byte-available event

Article : space-available event

关于ios - 通过 NSStream 判断连接建立成功和连接断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com