Russian Qt Forum

Qt => Работа с сетью => Тема начата: zoro86 от Март 26, 2010, 08:35



Название: как включить/отключить сетевое соединение
Отправлено: zoro86 от Март 26, 2010, 08:35
В Автомате Самообслуживания для передачи данных используется модем simens mc35i,
так вот для того чтобы данные могли отсылаться соответственно поднято соединение по дозвону,

Есть задача опрышивать модем с помощью AT команд но перед этим необходимо освободить порт... то есть разорвать соединение далее опрасить модем... далее опать поднять соединение.
так вот вопрос как можно это реализовать в Wind-е средствами QT ???...
в Linux системах через exec например я отправлял команды(PON [имя соединения] - поднимаем связь и POFF [имя соединения] - опускаем связь)... :)


Название: Re: как включить/отключить сетевое соединение
Отправлено: 0xFF от Март 26, 2010, 14:03
Цитировать
в Linux системах через exec например я отправлял команды(PON [имя соединения] - поднимаем связь и POFF [имя соединения] - опускаем связь)
В Windows rasdial


Название: Re: как включить/отключить сетевое соединение
Отправлено: Friar от Март 26, 2010, 14:11
Код:
qint32 connectGPRS(QString login,QString pwd,QString connectionName)
{
    RASDIALPARAMS RDP;
    RDP.dwSize=sizeof(RDP);
    _tcscpy(RDP.szEntryName,QStringToTCHAR(connectionName));
    int Pass;
    int res=RasGetEntryDialParams(NULL,&RDP,&Pass);
    if (res!=ERROR_SUCCESS)
    {
        return -1;
    }
    else
    {
        _tcscpy(RDP.szUserName,QStringToTCHAR(login));
        _tcscpy(RDP.szPassword,QStringToTCHAR(pwd));
        RDP.dwSize=sizeof(RDP);
        qDebug()<<QString("connectGPRS: user: %1").arg(TCHARToQString(RDP.szUserName));
        res=RasDial(0,0,&RDP,0,0,&HRC);
        if (res!=ERROR_SUCCESS)
        {
            qDebug()<<QString("Error RasDial: %1").arg(res);
            return -1;
        }
        else
        {
            qDebug()<<QString("RasDial: OK%1").arg((qint32)HRC);
            return 1;
        }
    }
    return 1;
}
соотв в connectionName название соединения, логин и пароль у меня отдельно задаются поэтому вынесено сюда. Так же в .pro файл добавить win32:LIBS += librasapi32
и нужные хедеры прицепить
#ifdef Q_OS_WIN32
    #include "windef.h"
    #include "winbase.h"
    #include "wingdi.h"
    #include "winuser.h"
    #include "psapi.h"
    #include "winsvc.h"
    #include "shellapi.h"
    #include "ras.h"
    #include "tchar.h"
    #include "raserror.h"
    #include "rasdlg.h"
    #include "winreg.h"
#else
#endif


Название: Re: как включить/отключить сетевое соединение
Отправлено: zoro86 от Март 26, 2010, 14:40
Но в Винде у нас есть уже соединение где прописаны и логин и пароль дозвона... нельзя ли его проста поднять?
или я что не правильно понимаю..

и еще один момент ... а как тогда допустим можно получить список сетевых подключений... которые находятся в свойстве сетевого подключения...??

Если я допустим далее знаю имя соединения то как мне его отключить...?


Название: Re: как включить/отключить сетевое соединение
Отправлено: Friar от Март 26, 2010, 14:47
Все можно сделать с помощью rasapi, как вам было сказано выше. Можно просто по названию соединения его поднять, просто у меня добавлено специально логин пароль. Если я правильно помню, то можно в функции которую я привел выше, просто не передавать логин и пароль и должно будет сработать.