Dok wrote:Бесполезно. Может я что-то не туда добавил?
Code: Select all
bool wxWidgetsApp::OnInit()
{
wxSocketBase::Initialize();
wxHTTP get;
get.SetHeader(_T("Content-type"), _T("text/html; charset=utf-8"));
get.SetTimeout(10); // 10 seconds of timeout instead of 10 minutes ...
// this will wait until the user connects to the internet. It is important in case of dialup (or ADSL) connections
while (!get.Connect(_T("www.google.com"))) // only the server, no pages here yet ...
wxSleep(5);
wxApp::IsMainLoopRunning(); // should return true
// use _T("/") for index.html, index.php, default.asp, etc.
wxInputStream *httpStream = get.GetInputStream(_T("/"));
// wxLogVerbose( wxString(_T(" GetInputStream: ")) << get.GetResponse() << _T("-") << ((resStream)? _T("OK ") : _T("FAILURE ")) << get.GetError() );
if (get.GetError() == wxPROTO_NOERR)
{
wxString res;
wxStringOutputStream out_stream(&res);
httpStream->Read(out_stream);
wxMessageBox(res);
// wxLogVerbose( wxString(_T(" returned document length: ")) << res.Length() );
}
else
{
wxMessageBox(_T("Unable to connect!"));
}
wxDELETE(httpStream);
get.Close();
gfru_rbmainWin* frm = new gfru_rbmainWin( (wxWindow*)NULL );
frm->Show();
return true;
}
Я конечно не специалист, но у вас так все мутно в коде ... постараюсь развеять, на сколько я это все понимаю.
Просто скажу свое мнение, а вы его проверите.
1. Инициализация вообще должна проходить внутри класса при вызове... хотя в данной ситуации ...
2. Я бы стал так писать:
wxHTTP get;
что то вернет = get.Connect(_T("
www.google.com"); // как я понимаю он сам будет в режиме ожидания пока не откроет страницу. Это не Windows API здесь не надо перебирать строки. Хотя я не уверен. Как я понимаю, wxWidget это "командный интерпретатор", обертка на обертке. Здесь должно быть все максимально просто как велосипед.
То что вернет, смотри и проверяй. Если получил то что ожидал, значит соединились, если нет, то не судьба.
ГЛАВНОЕ не забудь добавить http:// впереди т.к. эта ... не будет знать по какому протоколу запрашивать. Возможно что она понятия не имеет какой механизм задействовать при открытии страницы.
get.Close(); // в конце нужно закрыть.
Остальное бы я удалил. На мой взгляд остальное все лишнее, если вы хотите только проверить подключение.
Это просто мое мнение, не более того. Возможно что я не прав т.к. сам делаю первые шаги в программировании с wxWidget под Linux.