하나의 SSL 서버와 상호 작용하기 위해 OpenSSL API를 사용하여 하나의 SSL 클라이언트를 작성했습니다. OpenSSL 사이트에서 필자는 쓰기 버퍼가 일부 데이터를 작성한 후에 플러시해야한다는 것을 알게되었습니다. 내 클라이언트 프로그램에서 SSL_Write 및 SSL_Read를 사용하고 있습니다. OpenSSL 사이트에서 BIO_flush (BIO *)를 사용하여 데이터를 플러시하려고 제안 했으므로 여기서 충돌이 발생합니다.SSL 쓰기 버퍼를 플러시 할 수있는 방법이 있습니까
내가 사용하고 SSL 라이브러리는 어떤 다른 방법이 그래서 난 그냥 알고 싶어 :-(.. 내가 BIO_flush 버퍼를 쓰기 읽기 버퍼를 깜박 여부에 대해 확실하지 오전 여기
this site에서 가져온 여기
내 클라이언트 프로그램에 대한 세부 사항을입니까? ...는 SSL 쓰기 버퍼를 플러시. SSL_new- 팅 SSL_set_bio (MSSL, mBio, mBio)를 사용하여 SSL 객체에 BIO 객체를 설정 TCP 소켓 서버 BIO 객체 (mBio) BIO_new_socket 사용하여 만들기
- 로 만들기 연결 (socket_id을 BIO_NOCLOSE)
- ;
- SSL_set_fd (mSsl, socket_id)를 사용하여 소켓을 SSL 객체로 설정합니다.
- SSL_Connect (mSsl)을 사용하여 서버와 SSL 연결하기.
위의 단계를 수행 한 후 쓰기 및 읽기를 위해 두 개의 별도 스레드를 시작합니다. 쓰기 스레드는 SSL_write를 사용하여 서버에 데이터를 쓰고 읽기 스레드는 SSL_Read를 사용하여 서버에서 데이터를 읽습니다.
SSL_Write를 사용하여 각 패킷을 쓰고 쓰는 쓰레드에서 BIO_flush (mBio)를 호출하고 있습니다.
전체 프로그램에서 직접 바이오 버퍼 플러시를 수행하기 위해이 장소에서만 mBio 개체를 사용하고 있습니다.
일부 패킷을 보내기 시작하면 BIO_flush에서 충돌하는 프로그램이 생깁니다. 덤프마다 BIO_ctrl 함수가 해당됩니다. 나는 그 이상을 얻지 못하고있다.
위의 링크를 제공하고 동일한 문제에 직면 해있는 라이브러리를 사용한 사람이 있습니까? 예인 경우 해결책을 알고 있다면 알려주십시오.
BIO_flush()를 사용하는 스레드 동기화 규칙이 있습니까? BIO_flush에 대한 호출을 의미합니다 SSL_Read는 같은 시간에 발생하지 않아야합니다 ...?