Операция не может быть завершена. Сброс соединения партнеромIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Операция не может быть завершена. Сброс соединения партнером

Сообщение Anonymous »

Я работаю над функциональностью печати, используя программирование сокетов в iOS. Я использую следующий код для открытия потоков и выполнения операций чтения и записи. При открытии потоков делегат вызывается для события открытия как для входных, так и для выходных потоков. Я также получаю событие NSStreamEventHasSpaceAvailable, где я выполняю операцию записи, и событие NSStreamEventHasBytesAvailable, где я выполняю операцию чтения. Операция записи выполняется успешно первые два раза, после чего я получаю событие «Доступно байт», когда я пытаюсь выполнить операцию чтения. Каждый раз, когда я получаю -1 при чтении байтов и получаю событие NSStreamEventErrorOccurred с сообщением

"Операция не может быть завершена. Сброс соединения одноранговый узел"

для NSInputStream, за которым следует то же событие для NSOutputStream, а также при выполнении записи в третий раз. Иногда я даже получаю сообщение об ошибке 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];
Обработчик событий потока — код метода делегата
Читаемые байты всегда равны -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;
Ошибка:

Код: Выделить всё

    2013-09-18 12:27:36.424 SPConnector[1936:907] stream:handleEvent: : 
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: : 
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
Может ли кто-нибудь сообщить мне, в чем может быть причина проблемы?

Подробнее здесь: https://stackoverflow.com/questions/188 ... et-by-peer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»