Как различить LAN и dialup
От: Ardim  
Дата: 08.12.04 12:53
Оценка:
На компьютере имеется lan и несколько dailup соединений.
Нужно программно создавать сокет так чтобы он коннектился в одном случае используя dialup, а во втором lan.
Это можно сделать ?
Re: Как различить LAN и dialup
От: Michael Chelnokov Украина  
Дата: 08.12.04 12:58
Оценка:
Здравствуйте, Ardim, Вы писали:

A>На компьютере имеется lan и несколько dailup соединений.

A>Нужно программно создавать сокет так чтобы он коннектился в одном случае используя dialup, а во втором lan.
A>Это можно сделать ?

Да. Делать bind перед connect.
Re: Как различить LAN и dialup
От: butcher Россия http://bu7cher.blogspot.com
Дата: 08.12.04 13:13
Оценка: 2 (2)
Здравствуйте, Ardim, Вы писали:

A>На компьютере имеется lan и несколько dailup соединений.

A>Нужно программно создавать сокет так чтобы он коннектился в одном случае используя dialup, а во втором lan.
A>Это можно сделать ?
Вот так можно определить тип интерфейса:
#include    <iostream>
#include    <windows.h>
#include    <iphlpapi.h>

#pragma        comment (lib, "iphlpapi")
#pragma        comment (lib, "ws2_32")

int main (void)
{
    using                std::cout;
    using                std::endl;
    
    char*                buf = 0;
    PIP_ADAPTER_INFO    pAdaptersInfo;
    DWORD                dwSize = 0, dwIndex;

    GetAdaptersInfo (0, &dwSize);
    buf = new char[dwSize];
    if (!buf) return -1;
    pAdaptersInfo = reinterpret_cast<PIP_ADAPTER_INFO>(buf);
    if (GetAdaptersInfo (pAdaptersInfo, &dwSize) == ERROR_SUCCESS){
        while (pAdaptersInfo){
            cout<< "Name:            " << pAdaptersInfo->AdapterName << endl
                << "Description:    " << pAdaptersInfo->Description << endl 
                << "Index:            " << pAdaptersInfo->Index << endl
                << "Type:            ";
            switch (pAdaptersInfo->Type){
                case MIB_IF_TYPE_OTHER: cout << ":hz:" << endl; break;
                case MIB_IF_TYPE_ETHERNET: cout << "Ethernet" << endl; break;
                case MIB_IF_TYPE_TOKENRING: cout << "Token Ring" << endl; break;
                case MIB_IF_TYPE_FDDI: cout << "FDDI" << endl; break;
                case MIB_IF_TYPE_PPP: cout << "PPP" << endl; break;
                case MIB_IF_TYPE_SLIP: cout << "SLIP" << endl; 
            }
            pAdaptersInfo = pAdaptersInfo->Next;
            cout << endl;
        }
    }
    delete[] buf;
    return 0;
}

Нет ничего невозможного..
Re: Как различить LAN и dialup
От: Ardim  
Дата: 09.12.04 12:10
Оценка:
Спасибо всем
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.