Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Как узнать, кто в данный момент присоединен через Сеть к машине в Windows 95/98/Me (пример использования функции NetSessionEnum)

Windows 95/98/Me: Следующий пример демонстрирует, как пролистать текущие сессии на данной машине при помощи функции NetSessionEnum.

Пример распределяет необходимую память для получения 20-ти структур session_info_50. Если размер выделенной памяти недостаточен, то программа предупредит о наличии большего количества подключений. В заключении, программа освобождает распределённую память.

#include <stdio.h>
 #include <assert.h>
 #include <windows.h>
 #include <svrapi.h>
 
 const short MAX_ENTRIES = 20;
 
 int main(int argc, char FAR * argv[])
 {
    char FAR * pszServerName = NULL;
    short nLevel = 50;
    struct session_info_50* pBuf = NULL;
    struct session_info_50* pTmpBuf = NULL;
    short cbBuffer;
    short nEntriesRead = 0;
    short nTotalEntries = 0;
    short nTotalCount = 0;
    int i;
    NET_API_STATUS nStatus;
    //
    // Для локального компьютера ServerName должно быть NULL.
    //
    if (argc > 2)
    {
       printf("Usage: %s [\\\\ServerName]\n", argv[0]);
       exit(1);
    }
 
    if (argc == 2)
       pszServerName = argv[1];
 
    cbBuffer = MAX_ENTRIES * sizeof(struct session_info_50);
    //
    // Распределяем память, требуюмую, для получения 20-ти
    //  структур session_info_50.
    //
    pBuf = malloc(cbBuffer);
 
    if (pBuf == NULL)
       printf("No memory\n");
 
    // Вызываем функцию NetSessionEnum для получения списка подключений
    //  указывая информационный уровень 50.
    //
    nStatus = NetSessionEnum(pszServerName,
                             nLevel,
                             (char FAR *)pBuf,
                             cbBuffer,
                             &nEntriesRead,
                             &nTotalEntries);
    //
    // получаем результаты в цикле; обрабатываем ошибки.
    //
    if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
    {
       if ((pTmpBuf = pBuf) != NULL)
       {
          for (i = 0; (i < nEntriesRead); i++)
          {
             assert(pTmpBuf != NULL);
 
             if (pTmpBuf == NULL)
             {
                fprintf(stderr, "An access violation has occurred\n");
                break;
             }
             //
             // Отображаем информацию по каждому соединению.
             //
             printf("\n\tClient: %s\n", pTmpBuf->sesi50_cname);
             printf("\tUser:   %s\n", pTmpBuf->sesi50_username);
             printf("\tActive: %d\n", pTmpBuf->sesi50_time);
             printf("\tIdle:   %d\n", pTmpBuf->sesi50_idle_time);
             printf("\tKey:   %d\n", pTmpBuf->sesi50_key);
 
             pTmpBuf++;
             nTotalCount++;
          }
       }
    }
    else
       fprintf(stderr, "A system error has occurred: %d\n", nStatus);
    //
    // Отображаем предупреждение, если буфер не достаточен
    //  для хранения всех полученных данных.
    //
    if ((nEntriesRead < nTotalEntries) || (nStatus == ERROR_MORE_DATA))
       fprintf(stderr, "Not all entries have been enumerated\n");
    //
    // Освобождаем выделенную память.
    //
    if (pBuf != NULL)
       free(pBuf);
 
    fprintf(stderr, "\nTotal of %d entries enumerated\n", nTotalCount);
 
    return 0;
 }

 



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS