IOS:如何在服务器(PC)断开连接后重新连接到服务器(PC)

时间:2016-05-10 14:27:00

标签: ios objective-c client

我有两个Applaction,一个是客户端( IOS设备),另一个是服务器( PC设备)。 当我运行客户端时,它将连接到服务器,并且 当我断开服务器时,它将显示Disconnected。

问题:如何在服务器断开连接后重新连接服务器?

这是我在客户端(IOS设备)方面的代码

     -(void)viewDidLoad{
            [super viewDidLoad];


            NSString *ipAddressText = @"192.148.211.42";

            NSLog(@"Setting up connection to %@ : %i", ipAddressText, 111);
            CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (__bridge CFStringRef) ipAddressText, 111, &readStream, &writeStream);
            messages = [[NSMutableArray alloc] init];
            [self open];
        }

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

        NSLog(@"stream event %lu \n ", streamEvent);

        switch (streamEvent) {

            case NSStreamEventOpenCompleted:
                NSLog(@"Stream opened");
                _connectedLabel.text = @"Connected";
                break;
            case NSStreamEventHasBytesAvailable:

                if (theStream == inputStream)
                {
                    uint8_t buffer[1024];
                    NSInteger len;

                    while ([inputStream hasBytesAvailable])
                    {
                        len = [inputStream read:buffer maxLength:sizeof(buffer)];
                        if (len > 0)
                        {
                            NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];

                            if (nil != output)
                            {
                                NSLog(@"server said: %@ \n ", output);
                                [self messageReceived:output];
                            }
                        }
                    }
                }
                break;

            case NSStreamEventHasSpaceAvailable:
                NSLog(@"Stream has space available now");
                break;

            case NSStreamEventErrorOccurred:
                NSLog(@"%@\n",[theStream streamError].localizedDescription);
                break;

            case NSStreamEventEndEncountered:

                [theStream close];
                [theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
                _connectedLabel.text = @"Disconnected";
                NSLog(@"close stream");
                break;
            default:
                NSLog(@"Unknown event");
        }

    }

        - (void)open {

            NSLog(@"Opening streams.");

            outputStream = (__bridge NSOutputStream *)writeStream;
            inputStream = (__bridge NSInputStream *)readStream;

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

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

            [outputStream open];
            [inputStream open];

             _connectedLabel.text = @"Connected";
        }


    - (void)close {
        NSLog(@"Closing streams.");
        [inputStream close];
        [outputStream close];
        [inputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
        [outputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
        [inputStream setDelegate:nil];
        [outputStream setDelegate:nil];
        inputStream = nil;
        outputStream = nil;

        _connectedLabel.text = @"Disconnected";
    }

-(void)Reconnect{

   // Code here 

}

0 个答案:

没有答案