24. november 2001 - 16:05Der er
2 kommentarer og 1 løsning
Command
Er der nogle der ved hvordan man sender en command over netværk, jeg kan godt finde ud af at sende TEXT, det ser sådan ud, clientsocket1.Socket.Sendtext(besked); og for at modtage skriver jeg Socket.ReceiveText; er der nogle der ved hvorfan man sender og modtager comandoer.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du converterer dine commando\'er til noget teskt og tilbage igen, f.eks. \"run notepad.exe\" og så exec. du notepad.exe på den anden maskine, det er den eneste måde du kan gøre den slags på, der findes ikke nogen std. metode.
Man kan ikke sende en command til en server. Du kan kun sende tekst. Det er ikke så svært når man først lige ved hvordan det gøres.
Normal laver man en protocol over hvordan strengen ser ud når serveren eller klienten modtager den.
Min protocol til dette exempel ser sådan her ud: 100/\\Message/\\ - Giver en normal messagebox på serveren 101/\\Filnavn/\\ - Executer program 102/\\ - Lukker server
Ok først laver lige server delen:
//Put dette code under: ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var socktext:string; ResText : array[0..10] of string; I:integer; begin socktext := Socket.ReceiveText; for I := 0 to 10 do begin ResText[I] := copy(socktext, 1, pos(\'/\\\', socktext)-1); delete(socktext, 1, pos(\'/\\\', socktext)+1); end; //Ok nu er kode nummeret i: ResText[0] if ResText[0] = \'100\' then Showmessage(ResText[1]);//Vi ved at teksten som skal vises er i: ResText[1]
if ResText[0] = \'101\' then Winexec(pchar(ResText[1]), 0);
if ResText[0] = \'102\' then begin ServerSocket1.Active := false; Close; end; end;
//Client del: //Prøv at send een af de følgende ting:
ClientSocket1.Socket.SendText(\'100/\\Hej med dig\'); ClientSocket1.Socket.SendText(\'101/\\C:\\Test.txt/\\\'); //Sørg for at filen er der! ClientSocket1.Socket.SendText(\'102/\\\');
Ok, i mit eksempel brugte jeg /\\ som spliter, det er meget dumt, for hvis der er et chat felt, og en eller anden skriver \"/\\\" og sender det, kan dit program gå ned. Brug i stedet et hexdecimal nummer eg: #7. Fordi den kan man ikke skrive ved hjælp af et tastetur.
if ResText[0] = \'101\' then begin ShellExecute(Application.Handle, \'open\',PChar(ResText[1]), nil, nil, SW_SHOW); end;
Synes godt om
Ny brugerNybegynder
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.