0

目前我正在创建一个从输入流接收数据的应用程序。该数据被设置为NSString指针输出。目前,我只能在常规NSTextField窗口中显示输出。我当前的代码只允许在事件 hasBytesAvailable 为 true 时显示这些字符串。每次 hasBytesAvailable 能够从流中返回数据时,它都会NSTextField完全替换。我似乎无法NSTextView正确使用该对象。我想设置在NSTextView执行 hasBytesAvailable 事件返回信息时显示字符串数据。我希望能够向上滚动并查看正在发送的所有信息。

我能想到的与此相关的最佳示例是聊天服务器/客户端,其中我的应用程序将是接受数据的客户端,但将其全部保存在NSTextView窗口中。

谢谢

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {

    switch (streamEvent) {

        case NSStreamEventOpenCompleted:
            NSLog(@"Stream opened");
            break;
        case NSStreamEventHasSpaceAvailable:
            NSLog(@"Has space");
            break;

        case NSStreamEventHasBytesAvailable:

            if (theStream == inputStream) {

                uint8_t buffer[10000];
                long len;

                while ([inputStream hasBytesAvailable]) {
                    len = [inputStream read:buffer maxLength:sizeof(buffer)];
                    if (len > 0) {

                        NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
                        NSLog(@"Has Bytes");
                        if (nil != output) {
                            NSLog(@"%@", output);
                            [window setString:output];
                        }
                    }
                }
            }
            break;

        case NSStreamEventEndEncountered:
            NSLog(@"Error.");
            break;

    }

}
4

0 回答 0