Gösterilen sonuçlar: 1 ile 2 Toplam: 2

Delphi ile bilgisayarı açma

Bilgisayar ve İnternet Kategorisi Programlama Forumunda Delphi ile bilgisayarı açma Konusununun içerigi kısaca ->> Wake On Lan - Kapalı Bir Bilgisayarı Lan’dan Uyandırma Kapalı Bir Bilgisayarı Uyandırma Wake on LAn nedir? Wake on Lan ...

  1. #1
    - Çevrimdışı
    Onursal Üye dogangunes - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Apr 2007
    Burç:
    Kova
    Cinsiyet
    Kadin
    Mesaj
    17.801
    Rep Gücü
    137443

    Delphi ile bilgisayarı açma

    Wake On Lan - Kapalı Bir Bilgisayarı Lan’dan Uyandırma
    Kapalı Bir Bilgisayarı Uyandırma

    Wake on LAn nedir? Wake on Lan (wol) adından da anlaşılacağı gibi bir PC’yi
    network üzerinden açmak için data packetinin gönderilmesidir


    Daha da açarsak kısaca şöyel denebilir. Bir networkünüz var ve makinalrı gece açıp bişiler yüklemek istiyosunuz ki sabah tüm kullanıcılarda güncel yazılımlar olsun. mesela antivirüs updateleri gibi...

    İşte bu sebeple herhangi bir PC’ye gönderilen özel bir data paketi sayesinde makinaları açabilirsiniz. Yükleme isi ise özel bir tool ile yapılabilir tabiki... Şimdi teknik detaylaroına bakalım..

    Bir PC’yiuzaktan açabilmek için öncelikle o PC de bir ethernet kartı olmalı ve networke bağlı olması gerekmektedir. Bundan sonra ise O ethernet kartının WoL özelliğinin olması ve biostan enable hale getirilmiş olması gerekmektedir. Ethernet Kartı eğerki onboard değil ise 3 pinli konnektörünün anakarta bağlı olması da gerekmektedir. Tümleşik karlarda buna zaten gerek olmamaması da normaldir

    Neyse buraya kadar donanımsal kısımdı. Şimdi ise wol packetinden bahsedelim. Öncellikler wakeonlan paketi UDP pakettir. Yani böyle bir paketi kolaylıkla kendinizde oluşturabilirsiniz. Elinizde sadece UDP komponenti olması yeterli. şimdi de paketin içinden bahsedelim.
    Bu paket çok basit ve toplam 102 byte’lıktır.
    format ise şöyledir.

    ilk 6 byte "FF" leden oluşur geri kalan ise açılacak bilgisayarın MAC adresinin 16 kez tekrarlanması ile oluşur.
    MAC adresimiz 11h 22h 33h 44h 55h 66h olsun. paket şöyle olur.

    FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66

    işteee yukardaki paketi bir wake up paketidir.
    pekii bu paketi nereye yollayacağız ve nasıl??

    Yukarıdaki paketi "broadcast" yada "directed-broadcast" olarak yollarsanız orada bulunan 11 22 33 44 55 66 mac adresine sahip makina açılır...

    Şimdi broadcast ne demek? gidecek paketi ip adresi olarak 255.255.255.255 e yollamak demek bu paketin broadcast olduğu anl***** gelir. yani bu paket, paketin yolladnığı segmentteki her yere gider fakata routerdna geçemez ve orda kalır. yani başka segmentteki makinayı açamazsınız..

    Bu işi aşmak için directed broadcast kulllanılarbilir. directed broadcast kısaca şöle denebilir.
    iki network var : 192.168.0.0/255.255.255.0 ve 192.168.1.0/255.255.255.0
    şimdi bu 192.168.0.0 networkündeki makinanın 192.168.1.0 daki bir makinayı açması için 255.255.255.255 paketi göndermesi faydasızdır.
    Bu sebeple istenen networkteki makinaya o networke ait broadcast adresi ile yollamak gerek.

    yaniii... 192.168.0.255 veya 192.168.1.255 adreslerini kullanarak bu paketi göndermek gerekir.

    fazla karışık ise anlamanız için size delphi sourcelarını da yazayım..

    urada da delphi de yazılmış bazı kodlar var.
    bu iş için forma 4 tane label, 4 tane edit box, 1 status bar, 1 bitbtn ve 1 tane da indy UDP client koymanız gerek. )


    1nci edit box MAC adresi
    2nci edit box tahmini makinanın ip adresini
    3ncü edit box subnet maskını
    4ncü remottaki gidilecek ise port numarası.

    arkadaşlar bu işlemin çalışması için ya routerlarda interfacelere
    ip directed broadcast yada ip forward-protocol udp [port number] komutlarının girtilmesi gerek. Komutlar cisco ve nortellerde hemen hemen aynı..

    PHP Kodu:

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, NMUDP, IdBaseComponent, IdComponent, IdUDPBase,
    IdUDPClient, Buttons, ComCtrls;

    type
    TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    UDP1: TIdUDPClient;
    BitBtn1: TBitBtn;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    //************************************************** **
    ////////HEX TO INT/////////////////
    Function hexToInt(const hexStr: string): longint;
    var
    iNdx: integer;
    cTmp: Char;
    begin
    Result := 0;
    for iNdx := 1 to Length(hexStr) do
    begin
    cTmp := hexStr[iNdx];
    case cTmp of
    ’0’..’9’: Result := 16 * Result + (Ord(cTmp) - $30);
    ’A’..’F’: Result := 16 * Result + (Ord(cTmp) - $37);
    ’a’..’f’: Result := 16 * Result + (Ord(cTmp) - $57);
    else
    raise EConvertError.Create(’Geçersiz karakter’);
    end;
    end;
    end;

    ////////////////WAKE UP FUNC////////////////////

    procedure WakeUPComputer(ip,tmpst: string);
    var Cpt, Cpt1: Byte;
    tcnt:integer;
    tswake1 :string;
    tiwake : integer;
    stwake : string;
    buff1 : array [1..102] of byte;
    Buff:Array[1..6] Of Byte;
    begin
    form1.StatusBar1.SimpleText:=’WOL is sent to ’+ip;
    tcnt:=length(tmpst);
    for tiwake:=1 to tcnt do
    if (tiwake/2) <> trunc(tiwake/2) then
    begin
    tswake1:=tmpst[tiwake]+tmpst[tiwake+1];
    buff[trunc(tiwake/2)+1]:=(hextoint(tswake1));
    end;
    Buff1[1] := $FF;
    Buff1[2] := $FF;
    Buff1[3] := $FF;
    Buff1[4] := $FF;
    Buff1[5] := $FF;
    Buff1[6] := $FF;
    for Cpt1 := 1 to 16 do
    for Cpt := 1 to 6 do
    Buff1[7 + (Cpt1 - 1) * 6 + (Cpt - 1)] := Buff[Cpt];
    form1.udp1.ReceiveTimeout:=100;
    setlength(stwake,102);
    for cpt:=1 to 102 do stwake[cpt]:=chr(buff1[cpt]);
    form1.udp1.Send(ip,sizeof(stwake),stwake);
    end;

    ////////////////broadcast adrr func////////////////////
    function calcbroad(ip,sub:string):string;
    var S1,S2,S3,S4:INTEGER;
    I1,I2,I3,I4:INTEGER;
    begin
    S1:=255-STRTOINT(COPY(SUB,1,POS(’.’,sub)-1));
    DELETE(SUB,1,POS(’.’,sub));
    S2:=255-STRTOINT(COPY(SUB,1,POS(’.’,sub)-1));
    DELETE(SUB,1,POS(’.’,sub));
    S3:=255-STRTOINT(COPY(SUB,1,POS(’.’,sub)-1));
    DELETE(SUB,1,POS(’.’,sub));
    S4:=255-STRTOINT(SUB);

    I1:=STRTOINT(COPY(IP,1,POS(’.’,ip)-1));
    DELETE(IP,1,POS(’.’,ip));
    I2:=STRTOINT(COPY(IP,1,POS(’.’,ip)-1));
    DELETE(IP,1,POS(’.’,ip));
    I3:=STRTOINT(COPY(IP,1,POS(’.’,ip)-1));
    DELETE(IP,1,POS(’.’,ip));
    I4:=STRTOINT(IP);
    calcbroad:=inttostr(i1 or s1)+’.’+inttostr(i2 or s2)+’.’+inttostr(i3 or s3)+’.’+inttostr(i4 or s4);
    end;

    ///////////////////////////////////////////////////
    procedure TForm1.Button1Click(Sender: TObject);
    var C,broad,MAC,ip,sub:string;
    i:integer;
    S1,S2,S3,S4:INTEGER;
    I1,I2,I3,I4:INTEGER;
    begin
    MAC:=edit1.Text;
    broad:=calcbroad(edit2.Text,edit3.Text) ;
    udp1.active:=false;
    udp1.Port:=strtoint(edit4.Text);
    udp1.Active:=true;
    //showmessage(broad+’:’+mac);
    if length(MAC)=12 then wakeupcomputer(broad,MAC) ELSE SHOWMESSAGE(’ERROR ON MAC’);
    udp1.Active:=false;
    end;



    ALINTI

    Her Hakkım Saklıdır®
    |l|lllll|lll||ll||lll||ll||
    ³³°¹³²¹³ °¹²¹²²³
    © σяigiиαL-ρяσfiLє ®

    Supermeydan

  2. #2
    - Çevrimdışı
    Üyecik
    Üyelik tarihi
    Feb 2009
    Mesaj
    1
    Rep Gücü
    9

    Cevap: Delphi ile bilgisayarı açma

    tmm bu kodları denedim calişiyor ama edit1 mac adresi edit4 de port edit 3 ve edit 2 ye hangi bilgiyi z-yazacagız detaylı anlatabilirmisin

Benzer Konular

  1. Toshiba Dizüstü Bilgisayarı, Yenisiyle Değiştiriyor
    YukseLL Tarafından Donanım Foruma
    Yorum: 0
    Son mesaj: 15-05-2012, 05:53 PM
  2. PDA ( Cep Bilgisayarı ) Nedir?
    dogangunes Tarafından Windows Mobil İşletim Sistemi Foruma
    Yorum: 0
    Son mesaj: 13-11-2010, 05:04 AM
  3. Antivirüs yazılımları bilgisayarı neden yavaşlatır?
    Apollonius Tarafından Bilgisayar ve İnternet Foruma
    Yorum: 0
    Son mesaj: 16-01-2010, 12:49 PM
  4. Dna bilgisayarı
    diojen Tarafından Biyoloji Forum'u Foruma
    Yorum: 1
    Son mesaj: 15-10-2009, 04:20 PM
  5. Bilgisayarı en az kastıran antivirus programlari
    EMRE Tarafından Ücretsiz Programlar (Freeware ,Shareware ) Foruma
    Yorum: 1
    Son mesaj: 16-01-2006, 04:59 PM
Yukarı Çık