Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Клуб профессиональных программистов :: Выпуск #92


Клуб профессиональных программистов "Весельчак У"
Информационная рассылка сайта и форума.  Выпуск No92 (2010-05-08).

Здравствуйте, уважаемые читатели!

Всех с наступающим праздником победы над фашизмом!

Надеемся, человечеству хватит этого опыта, чтобы не повторить все эти беды снова.




Сегодня в выпуске — подборка тем форума за прошедшую неделю.




На нашем портале действует сервер управления проектами на движке Redmine. Пока там только один проект — программа TrafStat, предназначенная для учета сетевого трафика и генерации отчетов и графиков.

Также у нас есть сервер контроля версий Subversion (доступ через HTTP/DAV) с парой частных и несколькими публичными проектами.

Публичные проекты:


  • «batty» — игра под Windows, полная копия аналогичной игры для ZX-Spectrum. Обсуждение программы здесь.
  • «dupsystem» — система управления полиграфическим производством. Обсуждение здесь. К сожалению. автор посчитал удобным для себя перенести проект на Гугль. Жаль, но хозяин — барин...
  • «RusRoute». К сожелаению, ничего не могу сказать по этому проекту. Обсуждение его здесь.
  • «trafstat» — выше я уже упоминал этот проект — учет трафика и генерация отчетов. Обсуждение здесь и на странице текущих задач проекта.
  • «XML-RPC» — набор проектов по реализации клиентской и серверной части для работы с протоколом удаленных вызовов XML-RPC под разные среды исполнения. Сейчас имеются следующие проеты:
    • «PHP-server» — реализация серверной части на языке PHP (версия 5.2.0 и выше). Потребовалась из-за несовершенства штатной для PHP реализации (которая все еще значится в состоянии «экспериментальное»). Обсудение здесь.
    • «VB6-client» — клиентская часть, написанная на языке VisualBasic (среда VB6). Обсуждение здесь.

Если у вас есть потребность иметь публичный или частный SVN-репозиторий, имень собственный проект в системе управления проектами — обращайтесь к администрации на нашем форуме.



  • Программирование :: Общий
  • Добрый день!
    Подскажите, пожалуйста, "чайнику" что значит порождающая матрица двоичного линейного кода Хемминга в криптосистеме Мак-Элиса.
    Заранее большое спасибо!
  • Добрый день!
    Пожалуйста, помогите!
    Нигде не могу найти описание кода Хемминга 15/11.
    Заранее большое спасибо!
  • Программирование :: .NET технология от и до
  • Постановка задачи:
    надо проверитъ наличие / отсутствие утечек памяти с помощью теста:
    - какое-то измерение памяти на старте: mem_start
    - стартовать несколько ехе-шников,
    - создать по определенным правилам некоторые объекты
    - остановить ехе-шники, удалить созданные объекты
    - какое-то измерение памяти в конце: mem_end
    - анализ mem_end - mem_start

    Начала смотреть, чем бы померять использование памяти - народ (литература) предлагает, в основном, следующее:

    1) System.Diagnostics.PerformanceCounter("Memory")
    2) System.GC.GetTotalMemory
    3) Process.PrivateMemorySize64
    4) Process.WorkingSet64

    Смысл измерений с помощью 2) не понимаю - мусоросборник как таковой обрабатывается виндой и все равно будет аккуратно когда-нибудь оприходован (хотя может я и неправа...).

    Насчет остальных функций - не могу пока выделить наиболее подходящую (и вообще еще вопрос - стоит ли она в этом списке ;-) ).
    Посему вопрос - если кто-то сталкивался, подскажите, пожалуйста, какой функцией лучше делать эти замеры.
  • Господа,
    кто-нибудь сталкивался с этим предметом? Где бы посмотреть пример (лучше на с#) или описание алгоритма?  :-/
    Общее описание я прочла, но посмотреть бы на примерную реализацию...
  • Здравствуйте!
    Пытаюсь в VS2010 RC1 состряпать add-in для ворда 2007.
    Проект создал, кое-что вставил, при запуске отладки стартует ворд и все работает как надо.
    Если студия закрыта и запускаю ворд - плагин есть!
    А вот если попытаться его вставить в другую машину - "данный файл не является допустимой надстройкой офиса"
    Даже на моей, если удалить из плагинов, обратно руками не вставить :(  :dontknow:
    Пробовал и файл .dll, и .vsto - одна фигня...
  • Программирование :: С/С++
  • Делал программу в VS2008. А клиенты жалуются - то у одного, то у другого не работает. Стал разбираться: exe-файл кроме kernel32, user32 и shell32 очень активно юзает такого монстра, как MSVCR90D.dll
    Что делать? Пришлось перекомпилировать код под VS6.0 Всё! Никаких левых библиотек.
    Единственно, в чем сомневаюсь, может, и в новой студии как-то можно отключить использование этих монстров?
  • С этими утечками памяти в C++ просто беда. Посоветуйте, что можно сделать? Может быть есть какие-то специальные утилиты?
  • На входе есть массив данных, в котором  последовательно идут пакеты разной длины. Размер пакета определяется заголовком - 4, 9, 15 байт. Правильно ли будет разбирать массив данных, заполняя структуры на основании этого самого размера? Или структура всегда должна иметь размер кратный WORD/DWORD? Если да, то с чем это связано? Связано ли это с выравниванием?
  • Программирование :: С/С++ :: WinAPI & Visual C++
  • Доброго времени! Вот такая проблема возникла, при создании простого эхо-сервера не получается отследить попытку подключения к сервер по получаемому IP адресу сервер-сокета.

    Код:
    WSADATA     wsadata;
    SOCKET      ServerSocket;
    SOCKADDR_IN socketaddr;
    HOSTENT*    pHostent;       // Информация о хосте.
    // инициализация WinSock.
    if ((WSAStartup(MAKEWORD(2,2), &wsadata))==NULL)
    std::cout<<"Inization socket is complite"<<std::endl;
    else std::cout<<"Inization socket finished with error"<<std::endl;
    Sleep(150);
    //=====================Создание сокета==================================
    ServerSocket=socket(AF_INET,SOCK_STREAM,0);
    if (ServerSocket==INVALID_SOCKET)
    std::cout<<"INVALID_SOCKET"<<std::endl;
    else std::cout<<"ServerSocket created"<<std::endl;
    Sleep(150);
    //Заполним структуру адреса сокета на который будем его вешат
    socketaddr.sin_family=AF_INET;
    socketaddr.sin_port=PORT_ADDR;
    socketaddr.sin_addr.s_addr=0;//htons(INADDR_ANY) - принимает подключения на все IP адреса
    Sleep(150);
    //Вешаем сокет на сируктуру socketaddr
    if (bind(ServerSocket,(LPSOCKADDR)&socketaddr,sizeof(socketaddr))==SOCKET_ERROR)
    std::cout<<"Can't conect with 80 port"<<std::endl;
    else
    {
    std::cout<<"_____________________________________________________________________________"<<std::endl;
    std::cout<<"ServerSocket created: Type - SOCK_STREAM, Transport protcool - TCP, Port - 80"<<std::endl;
    std::cout<<"_____________________________________________________________________________"<<std::endl;
    }
    Sleep(150);

    //Перевод сокета в ждущий режим
    if (listen(ServerSocket,QUEUE_SIZE)==SOCKET_ERROR)
    std::cout<<"Server is not in listen mode"<<std::endl;
    else std::cout<<"Server is in listen mode"<<std::endl;


    pHostent = gethostbyname(chHostname);
    std::cout<<"Your IP adress: "<<inet_ntoa (*(reinterpret_cast<in_addr *>(*(pHostent->h_addr_list))))<<std::endl;



    SOCKET client_socket;
    sockaddr_in client_addr;    // адрес клиента
                  // (заполняется системой)
    // функции accept необходимо передать размер
        // структуры

        int client_addr_size=sizeof(client_addr);
    while ((client_socket=accept(ServerSocket,(sockaddr *)&client_addr,&client_addr_size)))
    {
    nclients++;
    HOSTENT*    pClientHostent;
    pClientHostent=gethostbyaddr((char *)client_addr.sin_addr.s_addr,4,AF_INET);
    //std::cout<<"New conect! "<<std::endl;
    printf("+%s [%s] new connect!\n",(pClientHostent)?pClientHostent->h_name:"",inet_ntoa(client_addr.sin_addr));


    }

    Если есть у кого подозрения прошу поделиться. Спасибо!
  • Здравствуйте!

    Суть задачи: необходимо отслеживать тайм ауты после отсылки данных по сети, т.е. отсылаю пакет данных, далее если в течение определенного времени не приходит квитанция то пакет считается непринятым.

    Можно ли реализовать это с помощью функции CreateTimerQueueTimer и если да то как примерно это будет выглядеть?

    В инете видел примеры использования CreateTimerQueueTimer когда добавлялся только один таймер, можно ли динамически добавлять таймеры в очередь?
  • Помогите разобраться, пожалуйста.

    Имею следующее описание:
    Код:
        struct ZDRItem
       {
            long   _itemId;
           double _mtbf;

            ZDRItem()
            {
                  _itemId = 0;
                  _mtbf    = 0.;
            }
        };

        class ZItems : public CArray<ZDRItem, ZDRItem&>
       {
       } _items;


    ZDRItem - обычная структура, мне надо создать массив этих структур.

    Вопос: Какие отношение между элеменом массива ZDRItem и аргументом  ZDRItem&?

    В смысле
    Код:
     ZDRItem 
    item = items.GetAt(i); 
    - означает простое копирование содержимого?

    А
    Код:
     items.Add(item );
     items.SetAt(ii, item );
    - тоже  означает простое копирование содержимого?

    Т.е. следующий код будет корректным?
    Код:
    ZDRItem item;

    item.itemId = 2;
     items.Add(item );

    item.itemId = 3;
     items.Add(item );
     

    Спасибо.

  • Джон, по любому к тебе вопрос ))

    Как это делается? Хочу стиль SDI как в студии и такие же тулбары, которые можно передвигать (при этом место прикрепления показывается синим значком - можно выбрать слева, справа, сверху, снизу, в центре, вкладка)

    Проект только начат, поэтому могу даже с нуля делать, если просто переделать из стандартного VS6-вида трудно
  • Программирование :: С/С++ :: Borland C/C++
  • Доброе время суток!
    кто нибудь может подсказать в чем ошибка данной программы-"безопасный массив(контроль границ массива)".

    Код:
    #include <iostream.h>
    #include <stdlib.h>
    class array
    {
        int size;
        char *p;
        public:
        array (int num)
        ~array (){delete[]p;} // почему здесь ошибка и какая?

        char&put(int i)
        char get(int i)
    };

    array::array (int num )
    {
        p=new char[num];
        if(!p)
        {
            cout<<"oshibka"
            exit(1);
        }
        size=num;
    }
     
    char & array::put(int i)
    {
        if(i<0 ll i>=size)
        {
            cout<<"naryshenie graniz",exit(1);
        }
        return p[i];
    }

    char array :: get(int i)
    {
        if(i<0 ll i>=size)
        {
            cout <<"oshibka v narushenii graniz",exit(1);
        }
        return p[i];
    }

    int main()
    {
        array a(10);
        a.put(3)='x';
        a.put(2)='r';
        cout<<a.get(3)<<a.get(2)<<"\n";
        a.put(11)='!';
        return 0;
    }
  • Программирование :: Delphi
  • Уважаемые! Доброго времени суток...
    Студент, пишу дипломную работу..."Мониторинг успеваемости студентов"...типо как Электронный дневник и все шло нормально пока....

    Базу данных реализовал в IB Expert. Там несколько таблиц, ну как обычно. Только вот заказчику дипломной работы преспичило реализовать систему в которой студенты пишут тесты на клиентах связанных  в локальной сети...после теста данные о студенте и ОЦЕНКА автоматически должны заноситься в базу которая находиться на сервере (где сидит злой препод!)...
    Написание самой программы и реализация тестов и остальных причендал это я сделаю, а вот как мне реализовать доступ клиентов к файлу БД???
    Читал много в инете... ни чего не понял! может просто к концу учебы мозГ отказывается работать, может просто ВЕСНА, а может я очень глуп....гугл не спасает! обращаюсь к ВАМ...

    Вообщем вопрос к Вам УВАЖАЕМЫЕ...объясните как мне подключить клиентов к БД которая находиться на сервере...

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

    P.S. если кому-то покажеться, что я не стал читать и просто начал новую тему...скажу честно ЧИТАЛ...но вообще не понял... а вообще думаю я не один кто сталкнулся с такой проблемой так что тема будет актуальна и далее...

    Ну кто  поможет? НАМ начинающим будет ОЧЕНЬ интересно и отрадно если объяснение будет сделано НА ПАЛЬЦАХ...Заранее благодарен!
    если что в личку     AlexRochev@mail.ru
  • Добрый вечер! :tease2:
    У меня курсовой проект... Дожила!  :lol:
    Всё шло гладко, но сегодня вот застряла на чистой глупости... :mad:
    Задание следующее:
    ∙Дана символьная квадратная матрица порядка 6. Заменить буквой а все ее элементы, расположенные выше строки с номером k.

    Мне нужно сделать так, чтобы если за компьютер сядет дворник дядя Вася то он ничего не смог напортачить. Вдруг он например создаст матрицу 3*3 и потребует чтобы заменились символы находящиеся выше 10-ой строки . А 10-ой строки-то и нету. На этот случай предусмотрено ШоуМесседж "Некорректное значение!" и чтобы все элементы матрицы стирались. Сообщение-то показывается, но ячейки не очищаются, а заполняются буквами "а"  :spy: Вот текст программы и архив на всякий случай:

    Код:
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons, Spin, Grids, Menus, ImgList, XPMan;

    type
      TForm1 = class(TForm)
        XPManifest1: TXPManifest;
        ImageList1: TImageList;
        MainMenu1: TMainMenu;
        N1: TMenuItem;
        N2: TMenuItem;
        N3: TMenuItem;
        N4: TMenuItem;
        N5: TMenuItem;
        StringGrid1: TStringGrid;
        N6: TMenuItem;
        N7: TMenuItem;
        N8: TMenuItem;
        Label1: TLabel;
        SpinEdit1: TSpinEdit;
        BitBtn1: TBitBtn;
        SpinEdit2: TSpinEdit;
        SpinEdit3: TSpinEdit;
        Label2: TLabel;
        Label3: TLabel;
        BitBtn2: TBitBtn;
        procedure N5Click(Sender: TObject);
        procedure N6Click(Sender: TObject);
        procedure N8Click(Sender: TObject);
        procedure BitBtn1Click(Sender: TObject);
        procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
        procedure BitBtn2Click(Sender: TObject);
        procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
          const Value: String);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}
     procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      i, j   : Byte;
    const
      Por    : Byte =5;
    begin
    if (SpinEdit1.Value>SpinEdit2.Value) or (SpinEdit1.Value>SpinEdit3.Value) then begin
          ShowMessage('Некорректное значение!');
          For i:=0 to SpinEdit1.Value-2 do
        For j:=0 to SpinEdit1.Value-2 do
          StringGrid1.Cells[j,i]:='';
          end;
      For i:=0 to SpinEdit1.Value-2 do
        For j:=0 to Por do
          StringGrid1.Cells[j,i]:='a'
    end;

    procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
        if key=#13
        then
        begin
          with StringGrid1 do
            if Col < ColCount - 1
            then
              Col := Col + 1
            else
              if Row < RowCount - 1
              then
              begin
                Row := Row + 1;
                Col := 0;
              end
              else
              begin
                Row := 0;
                Col := 0;
              end;
        end
        else
          key:=key;
    end;

    procedure TForm1.N8Click(Sender: TObject);
    begin
    MessageDlg('Чтобы запустить программу, нажмите кнопку "Запусить".'+#10#13+
    'Чтобы выйти из программы нажмите пункт меню "Файл->Выход"',mtConfirmation,[mbOK],0);
    end;


    procedure TForm1.N5Click(Sender: TObject);
    begin
    Close;
    end;

    procedure TForm1.N6Click(Sender: TObject);
    begin
      MessageDlg('Разработала: Агапчева Юлия Романовна'+#10#13+
                 'Группа: ПИЮ-Д21'+#10#13+
                 'Предмет: Разработка и стандартизация программных средств и технологий'+#10#13+
                 'Вариант: 15',mtConfirmation,[mbOK],0);
    end;

    procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
    StringGrid1.RowCount:=SpinEdit3.Value;
    StringGrid1.ColCount:=SpinEdit2.Value;
    end;

    procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    begin
    if StringGrid1.Cells[ACol,ARow]<>'' then begin
        BitBtn1.Enabled:=True;
        N3.Enabled:=True;
      end
      else
      begin
        BitBtn1.Enabled:=False;
        N3.Enabled:=False;
      end
    end;

    end.

    Кто чем сможет... :shuffle:
  • Доброго времени суток,уважаемые программисты ))
    Вопрос: Как связать таблицы (главную и подчиненную) через технологию WebSnap не испоьзуя скрипты?
    Если незя, то как с помощью скриптов это сделать?

    Че надо чтоб получилось:На одной страничке 2 таблицы.При выборе записи  в 1 таблице меняется содержимое 2 таблици.
  • Программирование :: VisualBasic
  • Дали такой кусок программы - подпрограмма и определение функции.

    Private Sub FillQuestion(quest As Question, records As Variant, ByVal index As Integer)
    With quest
    .Count = records(0, index)
    .AnswerType = records(1, index)
    .Text = records(2, index)
    End With
    End Sub

    Private Type Question
    Count As Integer
    AnswerType As Integer
    Text As String
    Answers(0 To 3) As String
    AnswerCode As String
    End Type

    Внимание, вопрос: почему пишется records(0, index), records(1, index), records(2, index) ?
    records - это что, массив? Или список с индексами? И зачем после каждого номера индекса добавляется слово index ?
  • Программирование :: Ассемблер
  • здравствуйте,пытаюсь открыть компилятор,а система мне пишет  : c:\program Files\Far2.0\myasm\asm_study\Bin\PSAPI.DLL.загружен,но точка входа для DllRegIster Server не найдена. и вообще c:\program Files\Far2.0\myasm\asm_study\Bin\PSAPI.DLL.не выглядит как.DLL или OSX файл? как правильно установить MASM?
  • Программирование :: Программирование 1С
  • Здравствуйте!
    Вот необходимо организовать обмен между двумя не типовыми конфигурациями 1с 7.7 ->8.1. А с КД я никогда не работал. В связи с этим ряд вопросов:

    1) Я слышал про КД для 8.0. Что есть своя для 8.1? Или это не важно главное настроить правила обмена, а между какими версиями будет протекать обмен это не принципиально? (т.е обмен 1с 7.7 ->8.1, а КД можно использовать для 8.1)
    2)Если конфигурация не типовая, тогда какую обработку мне использовать для загрузки и выгрузки?
  • Есть номенклатура, например фильтр маслянный для Ланоса производитель фирма1. Согласно кодированию принятому в Фирма1, эта номенклатура имеет артикул ХХХYYY. также есть фильтр маслянный, производства Фирма2. Этот фильтр тоже для Ланоса но согласно каталогу Фирмы2 этот фильтр имеет артикул AAABBB.
    Приходит в магазин клиент и приносит с собой снятый с Ланоса фильтр производства Фирмы1 на нем указан код XXXYYY.
    А у нас на складе есть только фильтры Фирмы2. Менеджер по продажам ищет по артикулу XXXYYY и соотв. ничего не находит.
    Есть ли стандартные способы ведения "кросскодирования" в 1С УТП? Кросскодирование - это ищем XXXYYY но находим AAABBB т.к. в базе для обоих фильтров заведено 2 артикула.

    Или таки добавлять в номенклатуру новую табличную часть ну и со всеми вытекающими....?
  • Программирование :: Программирование 1С :: 1С 7.x
  • Ситуация в следующем: делаю запрос по документу, все прекрасно работает до тех пор , пока в документе не попадается строк с одинаковым наименованием:
    Пример: в доке строки
    1 кружка -1шт
    2 тарелка-1шт
    3 чашка-1шт
    4 кружка-1шт

    итого получатся 4 строчки в документе, а в отчет выводится только 3, вторую кружку напрочь не видит! Почему? помогите, плиз, всю голову сломала уже...
  • Подскажите пожалуйста, почему в Предпринимателе 7.7  в книгу доходов и раходов попадает  Реализация? Это так задумано, или бухгалтер что то не правильно делает?
  • Ситуация такая:
    Имеем Документ с Полем Выбора (ВидТехники)
    -  кликаем на кнопку выбора и выбираем элемент 2
    В поле выбора отображается "ML-1640"
    Вопрос:
     - Как сделать, чтобы после выбора данного элемента в поле выбора отбразились еще и названия груп?
    Вобщем в конечном этоге там Нужно " Принтер SAMSUNG ML-1640".
  • В справочнике Номенклатура имеем услуги;
    У каждой услуги есть 4 поля "используемый материал (1-4)"
    Эти поля подчинены справочнику расходных материалов, который имеет реквизит "Количество"
    НУЖНО:
    Чтобы при Записи акта выполненых работ состоящих из одной или нескольких услуг из справочника расходных материалов списывалось количество материалов соответственно по полям "используемый материал", равное количеству каждой услуги, установленной в документе.

    Например:
    Услуга "Восстановление картриджа" имеет 3 заполненых поля "используемый материал":
     - 1. Тонер
     - 2. фотовал
     - 3. ракель.
    В акте выполненных работ устанавливаем количество оказанной услуги - к примеру 3 шт.
    Нужно, чтобы при Записи/Сохранении Данного документа из справочника "РасходныеМатериалы" из количества материалов списалось 3 Тонера, 3 Фотовала, 3 Ракеля.

    Сразу предупрежу - в программировании 1С очень новичок - так что если можно поподробнее!!!
  • Программирование :: Программирование 1С :: 1С 8.x
  • Помогите, пожалуйста!
    Мне в отчет "Анализ заказов покупателей" в типовой УТ v8 нужно вставить столбик с "галочками", чтобы можно было выбирать определенную номенклатуру (т.е. нужно еще каким-то образом связать Номенклатуру с флажком), которая потом по кнопке "Сформировать заказ поставщику" попадала в ТЧ этого док-та. Причем сам отчет формируется "динамически"...
  • "На основании этих документов должен автоматически заполняться документ «Ввод серийных номеров», в котором должны содержаться ссылка на исходный документ, поштучно все товары из документа прихода или продажи, для которых существует гарантийный срок (расходные материалы, машки и коврики не имеют гарантии и не учитываются). В этом документе на каждый товар вводится серийный номер."
     
    Все сделала, вот только не знаю, как теперь сделать так чтобы товары отбирались по наличию гарантии) Подскажите пожайлуста, недалекому человеку) Куда писать цикл отбора , в конструктор воода на основание или в форму документа Ввод серийных номеров. И что именно писать в цикле) И как это наличие гарантии организовать?) через перечисления или через чего другое?)
    Заранее спасибо)
  • Направления программирования :: Drivers
  • С выходом Vistы, всеми фибрами души, пытался оттянуть переход с ХР на нее, но не прошло и двух лет, а заставляют  :( :( :( ...
    Взял я свой драйвер, для работы с 1394, написанный под DDK2003 и DriverStudio, инстальнул под vistой, и он сходу заработал... :confused:
    Отсюда вопрос, в чем отличие между Vista и XP, в плане создания драйвера?....
  • Приветствую всех!
    Стоит задача по работе с PCI-платами в Windows XP. Проработал несколько источников, названия основных в конце этого поста, источник [1] у меня в pdf, а [2] в печатном виде.  

    В [1] на стр.129 написано о функциях BIOS, доступных как в кольце 3, так и кольце 0. А на стр. 130 указано об использовании каталога 32-разрядных сервисов, в частности для «поиска устройства по идентификатору».
    1. Кто-то использовал данные сервисы в Windows NT5.0, насколько это целесообразно?
    2. Почему в [2] об этих сервисах ничего не сказано, ведь они, похоже, полезны?
    3. Где можно подробней прочесть о работе с данными сервисами применительно к PCI устройствам?

    Литература:
    1. Гук М. Ю.  Шины PCI, USB и FireWire. Энциклопедия. — СПб.: Питер, 2005. — 540 с.
    2. Солдатов В.П. Программирование драйверов Windows. Изд. 3-е, перераб. И доп. – М: ООО «Бином-Пресс», 2006 г. – 576 с.
  • Направления программирования :: Сети
  • Описываю проблему. Пишу сканер локальной сети, т.е. в цикле надо сделать коннект на некоторый порт для компов в диапазоне 192.168.0.1-255.
    Использую не блокирующие сокеты и функцию select с таймаутом 0.5-1сек. Майкрософт в SP2 для Windows XP ограничила число одновременных коннектов для одного процесса десятью. Под одновременным коннектом понимаются соединения одновременно находящиеся в состоянии  SYN_SENT, причем при отсутствии хоста в сети такое состояние длится довольно долго - несколько секунд, что не есть good. Т.е. вызываем функцию connect (не блокирующую), ждем полсекунды в select, если за это время от хоста не пришел ответ, делаем closesocket и переходим к следующему хосту. Вот здесь и начинаются проблемы. Сокет закрыт, но соединение продолжает висеть в состоянии SYN_SENT (проверялось в tcpview). После десяти отсутствующих в сети хостов предел Майкрософт превышается и дальнейшие соединения невозможны. Собственно вопрос: как убивать сокеты зависшие в connect (соединения в состоянии SYN_SENT).

    Варианты использовать пропатченный tcpip.sys, увеличить время таймаута и использовать блокирующие сокеты не предлогать.
  • Добрый день) есть клиент UDP-чата. 
    он бесконечно слушает сервер на предмет входящих сообщений (recvfrom), а если пользователь нажимает, например, клавишу "enter", то клиенту следует через тот же самый сокет сделать sendto();

    все почему-то говорят про потоки. Но это же легче сделать без потоков?
  • Практические разделы :: Базы данных
  • Здравствуйте!

    Я на форуме совсем недавно
    Хотел бы попросить мне помочь со схемой данных
    Немного накидал схемку, она в приложенном рисунке, а также в файле аксеса.
    Я делаю диплом на эту тему, в страховании разбираюсь хорошо, сдал на 5 балов его.
    Мне нужно только автострахование - КАСКО и ОСАГО.
    а в лучшем случае помимо основной БД, необходимо сделать авторизацию и разбиение по уровням доступа к информации.

    может, кто уже разбирал эту тему.
    Заранее благодарю за советы

А теперь прощаемся с Вами до следующего выпуска.


С уважением, команда Клуба.


В избранное