Добрый день!
Имеется плата с двумя интерфейсами на борту - эзернет (eth0) и usb modem (eth1). Написана прога на Qt с использованием QSslSocket. Если в модем вставлена сим-карта, то можно прибиндиться к любому интерфейсу и слать через него данные на сервер. Но стоит вынуть симку из модема, начинается ерунда. При попытке прибиндиться к eth0 возникает ошибка «Connection refused», и никаким способом от нее не избавиться. Помогите, плиз, куда копать?
if(socket->bind(QHostAddress(ip_addr), 8080, QAbstractSocket::DontShareAddress))
{
socket->connectToHostEncrypted(url.host(), 443, QIODevice::ReadWrite, QAbstractSocket::AnyIPProtocol);
}
Лог:
Bind to ip "192.168.1.66"
>>> clnt: QAbstractSocket::BoundState
Bind is OK
>>> clnt: connectToHostEncrypted()
>>> clnt: QAbstractSocket::HostLookupState
>>> clnt: QAbstractSocket::ConnectingState
>>> clnt: Host Found
>>> clnt: QAbstractSocket::UnconnectedState
>>> clnt: socketError "Connection refused"
После возникновения ошибки попытка биндинга:
Bind to ip "192.168.1.66"
Create new socket
Bind is OK
>>> clnt: connectToHostEncrypted()
Видно, что сокет не меняет своего состояния.
Пробовал в обработчике ошибки удалять сокет и создавать новый перед биндом - не помогает.