1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Передача сообщения, Создание канала передачи данных
Имеется два приложения--одно из них серверное(главное), второе - клиентское(не главное). Передача данных т.е. сообщений осуществляется по каналу через протокол NetBios (передача данных вернее сообщений работает хорошо)..Но нужно модернизировать программу т.е. вывести информацию о канале и информацию о сетевом адаптере - пользователю. Как это осуществить?
серверное прил:
program netbios; uses crt, dos; type ncb = record Cmd: byte; CCode: byte; LocalSessionNumber: byte; NetworkNameNumber: byte; BufOfs: word; BufSeg: word; Size: word; CallName: array[1..16] of char; OurName: array[1..16] of char; ReceiveTimeout: byte; SendTimeout: byte; PostRoutineOfs: word; PostRoutineSeg: word; AdapterNumber: byte; FinalCCode: byte; Reserved: array[1..14] of char; end; var ncbrec: ncb;
нашел один код который выводит инфу о сетевом адаптере и и нфу о канале но проблема в том что этот код написан в Делфи...как можно его преобразовать в паскаль?
procedure TForm1.Button5Click(Sender: TObject); var i: integer; Ends1,Ends2: byte; NameType,NameStatus: String; begin Memo2.Clear(); Memo2.Lines.Add('Текущее состояние сети:'); FillChar(AStat, SizeOf(AStat), #0); ncb1.ncb_buffer := @AStat; FillChar(ncb1.ncb_callname,NCBNAMSZ,' '); ncb1.ncb_callname[0]:='*'; ncb1.ncb_length := SizeOf(TNetBiosInfo); RunCommand(NCBASTAT,true); Memo2.Lines.Add('МАС адрес сетевой платы: '+AdapterToString(AStat.AdapterStatus)); Memo2.Lines.Add('Количество имён в таблице: '+IntToStr(AStat.AdapterStatus.name_count)); Memo2.Lines.Add('Имена в таблице: '); for i := 0 to AStat.AdapterStatus.name_count - 1 do begin Ends1 := Byte(AStat.NameBuffer[i].name[NCBNAMSZ - 1]); Ends2:= Byte(AStat.NameBuffer[i].name_flags) and NAME_FLAGS_MASK and $F0; case Ends2 of UNIQUE_NAME: NameType:='Уникальное'; GROUP_NAME: NameType:='Групповое'; end; Ends2:= Byte(AStat.NameBuffer[i].name_flags) and NAME_FLAGS_MASK; case Ends2 of REGISTERING: NameStatus:='Регистрация'; REGISTERED: NameStatus:='Зарегистрированное'; DEREGISTERED: NameStatus:='Завершение_регистрации'; DUPLICATE: NameStatus:='Дублирование'; DUPLICATE_DEREG: NameStatus:='Дублирование_с_ожиданием'; end; Memo2.Lines.Add(Format('%s <%s> %s %s',[String(AStat.NameBuffer[i].name),IntToHex(Ends1, 2),NameType,NameStatus])); end; Memo2.Lines.Add('Версия NetBios: '+IntToStr(Ord(AStat.AdapterStatus.rev_major))+'.'+IntToStr(Ord(AStat.AdapterStatus.rev_minor))); Memo2.Lines.Add('Количество свободных блоков NCB: '+IntToStr(AStat.AdapterStatus.free_ncbs)); Memo2.Lines.Add('Максимальное количество каналов: '+IntToStr(AStat.AdapterStatus.max_sess)); Memo2.Lines.Add('Максимальный размер датаграммы: '+IntToStr(AStat.AdapterStatus.max_dgram_size)); Memo2.Lines.Add('Количество ожидающих каналов: '+IntToStr(AStat.AdapterStatus.pending_sess)); Memo2.Lines.Add('Тип адаптера (FF для Символического адаптера Кольца или FE для адаптера Ethernet): '+IntToHex(Ord(AStat.AdapterStatus.adapter_type),2)); end