2010-11-12 4 views
2

Я пишу сервер с OpenSSL API. Я хочу повторно использовать порт, который уже используется.Как повторно использовать связанный порт с OpenSSL api?

я могу сделать это в программировании сокетов по телефону

setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); 

, прежде чем я называю

bind(sockfd, ...); 

Но как повторно использовать порт в OpenSSL программирования?

Я использую

bio = BIO_new_ssl(ctx, 0); 
BIO_get_ssl(bio, &ssl); 
SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY); 
abio = BIO_new_accept(server_port); 
BIO_set_accept_bios(abio, bio); 
BIO_do_accept(abio) 

настроить мое подключение к OpenSSL Server.

Есть ли какие-либо функции, такие как setsockopt() Возможно изготовление BIO * повторное использование порта?

Спасибо!

ответ

3

Вы можете использовать BIO_set_bind_mode:

BIO_set_bind_mode(abio, BIO_BIND_REUSEADDR); 
+0

Должен ли я называть BIO_set_bind_mode() перед BIO_new_accept()? – Celebi

+0

@Celebi: Вы не можете, потому что вам нужно называть его на accept 'BIO', который создается' BIO_new_accept() '. Вы можете вызвать его в любое время между тем, когда был создан accept 'BIO', и первым вызовом BIO_do_accept(). – caf