6 votes

L'opération n'a pas pu être menée à son terme. Connexion réinitialisée par l'homologue

Je travaille sur la fonctionnalité d'impression en utilisant la programmation de socket dans iOS. J'utilise le code suivant pour ouvrir des flux et effectuer des opérations de lecture et d'écriture. Lors de l'ouverture des flux, le délégué est appelé pour l'événement d'ouverture pour les flux d'entrée et de sortie. Je reçois également un NSStreamEventHasSpaceAvailable où j'effectue une opération d'écriture et NSStreamEventHasBytesAvailable où j'effectue une opération de lecture. L'opération d'écriture se déroule avec succès les deux premières fois, puis j'obtiens un événement "bytes available" au cours duquel j'essaie d'effectuer une opération de lecture. A chaque fois, j'obtiens -1 comme octets lus et j'obtiens un NSStreamEventErrorOccurred avec un message

"L'opération n'a pas pu être achevée. Connexion réinitialisée par l'homologue"

pour NSInputStream suivi du même événement pour NSOutputStream ainsi qu'en se produisant pour écrire pour la troisième fois. Il m'arrive même d'obtenir l'erreur Broken Pipe.

        CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"123.123.12.12",DEFAULT_LPR_PORT, &readStream, &writeStream);
self.inputStream = (__bridge NSInputStream *)readStream;
self.outputStream = (__bridge NSOutputStream *)writeStream;

[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];

Gestionnaire d'événements de flux - Code de la méthode Delagate Le nombre d'octets lus est toujours égal à -1.

    case NSStreamEventHasBytesAvailable:
    {
        NSLog(@"NSStreamEventHasBytesAvailable");
        if (theStream == inputStream) {

            uint8_t buffer[1024];
            int len = 0;

            while ([self.inputStream hasBytesAvailable]) {
                len = [self.inputStream read:buffer maxLength:sizeof(buffer)];
                NSLog(@"bytes read len --- :%d ",len);
                if (len > 0) {

                    NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding];

                    if (nil != output) {
                        NSLog(@"bytes value: %@", output);
                    }
                }
            }
        }
    }
        break;

Erreur :

    2013-09-18 12:27:36.424 SPConnector[1936:907] stream:handleEvent: : <__NSCFInputStream: 0x1e07b0e0>
    2013-09-18 12:27:36.428 SPConnector[1936:907] NSStreamEventErrorOccurred localizedDescription --- The operation couldn’t be completed. Connection reset by peer
    2013-09-18 12:27:36.430 SPConnector[1936:907] NSStreamEventErrorOccurred domain --- NSPOSIXErrorDomain
    2013-09-18 12:27:36.431 SPConnector[1936:907] NSStreamEventErrorOccurred Code --- :54
    2013-09-18 12:27:36.432 SPConnector[1936:907] stream:handleEvent: : <__NSCFOutputStream: 0x1e07b170>
    2013-09-18 12:27:36.433 SPConnector[1936:907] NSStreamEventErrorOccurred localizedDescription --- The operation couldn’t be completed. Connection reset by peer
    2013-09-18 12:27:36.434 SPConnector[1936:907] NSStreamEventErrorOccurred domain --- NSPOSIXErrorDomain
    2013-09-18 12:27:36.435 SPConnector[1936:907] NSStreamEventErrorOccurred Code --- :54

Quelqu'un peut-il me dire quelle est la raison de ce problème ?

0voto

StefanoM5 Points 229

Je reçois le même message. J'appelle mon service avec la chaîne "getHandShakeParameter", mais son nom était "GetHandShakeParameter", avec "G" en majuscule...

Problème résolu ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X