Спасибо за ответ - хороший материал. Прочитал первую статью с горем пополам(С английским все плохо) Интересно но много букв и другой подход нежели на ibm.com - (В том числе и то, что например в этих статьях они вообще не используют bio_read). Я их конечно дочитаю эти статьи чтобы понять в чем может быть проблема, но код я их использовать не буду. Тот код что выше это код взятый с openssl.org и исправленный немного(В первоначальном варианте он нерабочий) - сейчас уже почти все работает за исключением того что я не могу прочитать на сервере входящее сообщение. И проанализированный со статьями на ibm.com (Очень доступные статьи) я с этих статей стырил код чтения - записи - с анализом ошибки и с повтором. - В коде с openssl.org он прекрасно себя чувствует при передаче с сервера на клиент а наоборот - нет - такая же в общем история. //Write begin printf("Sending Hello server\n"); strcpy(tmpbuf, "Hello server\n"); for(;;) { if(BIO_write(out, tmpbuf, strlen(tmpbuf)) <= 0) { if(! BIO_should_retry(out)) { printf("Write is crashed\n"); return 0; } continue; } break; } // Write end //Read begin for(;;) { len = BIO_read(sbio, tmpbuf, sizeof(tmpbuf)); if(len == 0) { printf("Server is close connection\n"); return 0; } else if(len < 0) { if(! BIO_should_retry(sbio)) { printf("Read is crashed %d\n",len); return 0; } continue; } break; } printf("[%s] --- [%d] \n",tmpbuf, strlen(tmpbuf)); //Read end
|