Avatar billede nlbgf Nybegynder
18. oktober 2000 - 18:27 Der er 8 kommentarer og
2 løsninger

Send til hele workgroupen

Kan det lade sig gøre, at sende en besked til samtlige computere i en workgroup? Eller okay det kan det, det gør WinPopup jo, men hvordan gør man i Delphi 4 Client/Server? Jeg kan kun finde ud af, at sende til en bestemt ip.
Avatar billede borrisholt Novice
18. oktober 2000 - 18:29 #1
du er nød til at lede hele woorkgruppen i gennem for Ip adresser og så sende til dem enkelt vis ...

Jens B
Avatar billede nlbgf Nybegynder
18. oktober 2000 - 18:30 #2
Okay, hvordan gør jeg så det lettest?
Avatar billede picard Nybegynder
18. oktober 2000 - 20:08 #3
Ikke mange point for et så langt svar men hvad ;)

Borrisholt har ganske ret i at man skal søge hele workgroup igennem !!

De computere, den nedenstående procedure finder kaster den over i et array of strings !!! Samtidig tæller den antallet af fundne computere, variablen ComputerCount.

(Kilde: : Erwin Molendijk)

var
  Computer                : Array[1..500] of String[25];
  ComputerCount            : Integer;


procedure FindAlleComputere(Workgroup : String);
Var
  EnumHandle                : THandle;
  WorkgroupRS              : TNetResource;
  Buf                      : Array[1..500] of TNetResource;
  BufSize                  : Integer;
  Entries                  : Integer;
  Result                    : Integer;

begin
  ComputerCount := 0;

  Workgroup := Workgroup + #0;

  FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
  With WorkgroupRS do
  begin
    dwScope := 2;
    dwType := 3;
    dwDisplayType := 1;
    dwUsage := 2;
    lpRemoteName := @Workgroup[1];
  end;

  WNetOpenEnum( RESOURCE_GLOBALNET,
                RESOURCETYPE_ANY,
                0,
                @WorkgroupRS,
                EnumHandle );

  Repeat
    Entries := 1;
    BufSize := SizeOf(Buf);

    Result :=
    WNetEnumResource( EnumHandle,
                      Entries,
                      @Buf,
                      BufSize );
  If (Result = NO_ERROR) and (Entries = 1) then
  begin
      Inc( ComputerCount );
      Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);
  end;
  Until (Entries <> 1) or (Result <> NO_ERROR);

  WNetCloseEnum( EnumHandle );
end; 

mvh.

Christian
Avatar billede nlbgf Nybegynder
18. oktober 2000 - 20:25 #4
Okay, tak for hjælpen. Jeg giver lige lidt ekstra points (var ikke klar over, at det var så svært) :-)
Avatar billede picard Nybegynder
18. oktober 2000 - 20:27 #5
hehe, det er bare iorden. Det var trods alt Borrisholt der kom med den gode ide ;)
Avatar billede borrisholt Novice
19. oktober 2000 - 08:21 #6
picard har basalt set ret i sin algoritme. Du vil jeg gerne angribe den for at være ikke tråd baseret. Det betyder du bruger ganske betragtlige resourser på at søge efter computere ...

På http://borrisholt.com under networks kan du downloade et eksempel på hvordan man laver sådan en  i en tråd.

jens B
Avatar billede picard Nybegynder
19. oktober 2000 - 11:35 #7
Tråd baseret er da kun smart hvis han kan lave noget i mellemtiden. Jeg ser ingen grund til at lave det i en tråd, hvis han alligevel bare skal sende sende en besked til dem computeren så snart han har fundet den.

Måske har jeg overset noget ;)

Christian
Avatar billede borrisholt Novice
19. oktober 2000 - 11:43 #8
Lave noget i mellem tiden .. ja det er rigtigt ...

Tegne skærmen op kunne da være rart ... Måsk der var andre processer der skulle bruge CPU\'en.

Det er altsammen et spørgsmå om the 32 bit way of doing things. Og en lille smugle religion :-)

Jens B
Avatar billede borrisholt Novice
19. oktober 2000 - 11:43 #9
+tråde er tit hurtiger end ikke tråde .... Søgning på harddisk er et godt eksempel på dette ...

Jens B
Avatar billede lrj Nybegynder
19. oktober 2000 - 18:00 #10
Well, andre processer får jo lige så meget lov til at bruge cpu\'en om du bruger tråde eller ej. Det er kun for dit eget programs skyld du kan opdele det i asynkrone dele :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester