UDP ile ağdaki kapalı durumdaki bilgisayarı Açma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Misafir

Mesaj gönderen Misafir »

Tamam o kod oldu zaten ötekini soruyorum ben 3ncü edit box subnet maskını // Bu nedemek ???
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Arkadaşlar Üzülerek söylüyorum ki yazdıklarınızın hepsinin çalışmamasının sebebi mac adresi. şimdi gelelim konumuza udp protokolü ile bir bilgisayarı açmanız için bir kaç sartı sağlamanız gerekli.

Bilgisayarınızda ASE nin de dediği gibi yaz onboard bir ethernet kartı olucak yada pci ethernet kartınız üzerindeki udp çıkışından board ınıza ara kabloyu bağlamanız gerekli. Ayrıca şunuda belirteyim. Realtek ethernetler haricinde Pci ethernetlerin beraberinde UDP cable gelmiyor. Ayrıca bu şartlar sağlanmış ise biosdan da active edilmesi gerekli udp nin.

Bu işlemlerden sonra programda neden hata verdiğini söyleyelim veya neden bilgisayarı açmadığını.

Her ethernetin bir mac adresi vardır ve bu fabrikasında belirlenir yani sizin verebildiğiniz bir şey degildir. ve sabittir. degiştirilemez.

Zemin kardeşim. ;;

Resim

Yukarıdaki Resimdeki Fiziksel Adres Yazan kısımdaki değer bilgisayarımın ethernet kartının mac adresidir. bilgisayarımda windows xp olduğu için bunu göstere bildim fakat 98 de daha kolay .. başlat / çalıştır / winipcfg komutu ile mac adresinizi görebilirsiniz. win95 ve winme dede bu şekilde.

Asıl konumuza gelelim. senin daha önceki msg larda vermiş oldugun ip adresi yerine mac adresini yazacaksın. string bir değer olrak. bu şekilde ethernet kartında destekliyor ise , karşı makineyi açabilirsin.

Kolay Gelsin. Takıldığın bir yer olursa yardımcı olmaya çalışırım.
Misafir

Mesaj gönderen Misafir »

1-Bende windows xp kullanoyorum bu bilgileri hangi komut ile çıkarıyorsunuz???
2-oraya mac adresi yazdım diyelim hiç ip adresi kullanmadan naıl olucak bu ???
3-Bu kodların çalışıp çalışmadığı kesinmi yani siz denedinizmi hiç ??
İnternet cafelerdeki bilgisayarların ethernet kartları onborard hepsi bilgisayarlar kapalıyken ethernet kartlarının ışıkları yanıyor
4-Biosun neresinden bu udp ayarlarını açıyoruz ???
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

zemin yazdı:1-Bende windows xp kullanoyorum bu bilgileri hangi komut ile çıkarıyorsunuz???
2-oraya mac adresi yazdım diyelim hiç ip adresi kullanmadan naıl olucak bu ???
3-Bu kodların çalışıp çalışmadığı kesinmi yani siz denedinizmi hiç ??
İnternet cafelerdeki bilgisayarların ethernet kartları onborard hepsi bilgisayarlar kapalıyken ethernet kartlarının ışıkları yanıyor
4-Biosun neresinden bu udp ayarlarını açıyoruz ???
Selamlar ;

Cevaplar ;

1- Başlat / Çalıştır / CMD "" Daha sonra , komut satırına "ipconfig /all" komutunu verirseniz. benim resimde vermiş oldugum liste karşınıza çıkar.

2- Yerel alan ağlarında , bağlı olduğunuz swich / router etc... bu gibi aygıtlara bağlı makineler aslında birbirlerini MAC adresleri sayesinde görürler. Fakat siz ip sayesinde gördüğünü zannedersiniz. nasıl xxx.xxx.xxx.xxx nolu ip http://www.delphiturkiye.com u ifade ediyorsa. LAN daki ip adresleride Makinelerin Ethernet MAC adreslerini bu şekilde tanır.

3- Yok hayır ben denemedim ama bir sitede ("Site ismi şuanda aklımda degil" okumuştum... Benim okuduğum sitede ASM kodları ile bu işlemin nasıl yapıldığı anlatılmaktaydı...

4- Sanırım Advances Futures Setup sekmesinde olması lazım. eğer ethernet kartınız udp yi desteklemiyor ise bu özelliği boşuna aramayın. bence ilk önce board ınızın kitapcığından kontrol edin..

Kolay Gelsin...
Misafir

Mesaj gönderen Misafir »

teşekküler peki subnet maskını nedemek
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Merhabalar ;

subnet mask yani ağ alt maskesi resimdede gözüktüğü gibi , 255.255.255.0 şeklindedir. burada en fazla 255 ip kullanılabilir. sistem kurulan yerin büyklüğüne göre. eğer 255 makineden daha fazla varsa , 255.255.0.0 şeklinde verilerek , 65025 farklı makineye ip dağıta bilirsiniz subnet mask bunun ile ilgili ....

Kolay Gelsin...
Misafir

Mesaj gönderen Misafir »

teşekkükler
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

merhaba arkadaşlar. biliyorum bu konu yazılalı baya olmuş ama bu konu yazıldığı sıralarda programlama hayatım başlamamıştı bile bu konuya yeni ihtiyacım oldu :D bir internet kafe programı yazmaya çalışıyorum ve ana makinadan tüm clienleri açmaya çalışıyorum.

ilk sayfadaki ASE nin verdiği kodu çalıştırdım gayet güzel çalışıyor. ama bir sorun var. IP ve mac adres hadi neyse onları bulmak için forumda kaynak var ama subnet mask bilgisini nasıl alırım.

"ipconfig /all" komutunun sonucunu parse etmek mumkun belki ama bu durumda da OS dili vs den dolayı sebeplerle parse işlemine kasmak istemiyorum. bunun daha kolay bi yontemi var mı acaba, mesela komplex yapıdaki bi ağda farklı alt ağlar oluşturulmuşsa mesela burda subnetmasklar değişecek ve standart subnet masklar kullanılması hata verecek. kaldı ki adsl modemlerin bazıları yerele 192 li ip dağıtırken bazıları 10 lu ip dağıtıyor yani subnet mask şudur demek herzaman mumkun değil.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

subnet mask ya da alt ağ maskesi diye anladığın farklı bir şey mi tam anlayamadım. Genelde 255.255.255.0 diye verilir. ADSL modem veya ip dağıtıcılar (hub switch) farklı gruplar halinde vermez. Özel bir durum yoksa birinde ne ise diğerlerini de aynı kabul edebilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

yanlışım varsa düzeltin ama bildiğim kadarıyla subnet mask ip sınıfına gore değişiyo.
A sınıfı IPler (ilk okteti 1-126 olanlar) için 255.0.0.0
B sınıfı IPler(ilk okteti 128-191 olanlar) için 255.255.0.0
C sınıfı IPler(ilk okteti 195-223 olanlar) için 255.255.255.0

oluyo subnet mask değeri. benim gördüğüm kadarıyla adsl modemler 10lu ve 192li (A ve C sınıfına ait) IP dağıtıyor.

her ne kadar yapacağım program çok da psikopat bi ağ yöneticisinin elinden çıkmış bi ağda çalışacak olmasa da :D (IPnin ilk oktetini kontrol ederek subnet mask değerini ayarlarım) genel mantık olarak merak ettim.

alt ağlara bölünecek bi ağdaki bilgisayarları açmaya çalışsanız subnet mask standart halini kaybedeceğinden direk olarak şudur diyemeyiz. bu durumda ne yapabilirim. indy içinde baktım ama uygun comp. bulamadım. bilen var mı acaba???
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bulunduğunuz ağdaki tüm ayarlar aynı olacağını varsaydığımızda Registry'den okunacak değere göre hareket etmek en makulu değil mi ? Yoksa ağınız sizin ağınız, subnet mask çeşitliliğini bir diziye koyup yayın yapın olsun bitsin :wink:

Resim

- Bu değeri nasıl bulucam diye sorarsanız, tüme varım metodu ile derim.

- Örneğin benim makinemdeki Network kartının içeriği şu şekilde...

Kod: Tümünü seç

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{819A4FF3-852C-4E8D-8E4E-DBD760C513B9}\Parameters\Tcpip
- Sizin Network kartının {819A4FF3-852C-4E8D-8E4E-DBD760C513B9} şeklindeki servis adını bulmak için ise registry'den aşağıdaki dal içeriğindeki başlıklardaki klasörlerden ServiceName olanları okuyun.

-

Kod: Tümünü seç

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
- Sonra da yukardaki daha önce verdiğim daldaki yere koyup arayın. Açılacak klasör sizi ayarların olduğu resimde görülen yere götürecek.

// EK // örnek uygulama hazırladım belki işinize yarar. Bir tane MEMO koyun, network kartınızın servis kodunu Registry'den tespit edip ilgili yere yazın ve kodu çalıştırın...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
// Uses Registry
var
  Anahtar,
  ServisKodu : String;
  Buffer     : array [1..32] of Char;
  BufSize    : Integer;
begin
  ServisKodu := '{819A4FF3-852C-4E8D-8E4E-DBD760C513B9}';
  Anahtar    := Format('SYSTEM\CurrentControlSet\Services\%s\Parameters\Tcpip', [ServisKodu]);

  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey(Anahtar, False);
    BufSize := Reg.GetDataSize('DefaultGateway');
    Reg.ReadBinaryData('DefaultGateway', Buffer, BufSize);
    Memo1.Lines.Add( 'DefaultGateway : ' + Buffer );

    BufSize := Reg.GetDataSize('DhcpDefaultGateway');
    Reg.ReadBinaryData('DhcpDefaultGateway', Buffer, BufSize);
    Memo1.Lines.Add( 'DhcpDefaultGateway : ' + Buffer );

    Memo1.Lines.Add( 'DhcpIPAddress : ' + Reg.ReadString('DhcpIPAddress') );
    Memo1.Lines.Add( 'DhcpServer : ' + Reg.ReadString('DhcpServer') );
    Memo1.Lines.Add( 'DhcpSubnetMask : ' + Reg.ReadString('DhcpSubnetMask') );

    BufSize := Reg.GetDataSize('DhcpSubnetMaskOpt');
    Reg.ReadBinaryData('DhcpSubnetMaskOpt', Buffer, BufSize);
    Memo1.Lines.Add( 'DhcpSubnetMaskOpt : ' +Buffer );
    Memo1.Lines.Add( 'EnableDHCP : ' +IntToStr( Reg.ReadInteger('EnableDHCP') ) );

    BufSize := Reg.GetDataSize('IPAddress');
    Reg.ReadBinaryData('IPAddress', Buffer, BufSize);
    Memo1.Lines.Add( 'IPAddress :' + Buffer );

    Memo1.Lines.Add( 'Lease :' + IntToStr( Reg.ReadInteger('Lease') ));
    Memo1.Lines.Add( 'LeaseObtainedTime :' + IntToStr( Reg.ReadInteger('LeaseObtainedTime') ));
    Memo1.Lines.Add( 'LeaseTerminatesTime :' + IntToStr( Reg.ReadInteger('LeaseTerminatesTime') ));

    BufSize := Reg.GetDataSize('SubnetMask');
    Reg.ReadBinaryData('SubnetMask', Buffer, BufSize);
    Memo1.Lines.Add( 'SubnetMask : ' + Buffer );
    Memo1.Lines.Add( 'T1 : ' + IntToStr( Reg.ReadInteger('T1') ));
    Memo1.Lines.Add( 'T2 : ' + IntToStr( Reg.ReadInteger('T2') ));
  finally
    Reg.CloseKey;
    Reg.Free;
  end;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

teşekkürler @mrmarman ağ benim ağım olmadığına göre sanırım en iyisi registryden okumak.
(ağ benim ağ değil çünkü bi internet kafe programıyla uğraşıyorum ve kafe ağı elimde diil...)
kazimates
Üye
Mesajlar: 332
Kayıt: 01 Tem 2005 12:40
Konum: Kıbrıs
İletişim:

wol (wake on lan) hala daha çalışmıyor

Mesaj gönderen kazimates »

arkadaşlar yukarıda verdiğiniz tüm kodları ve yazıları okudum benimde problemim aynı ve delphi ile ağdaki ayarlarımı bildiğim ve subnetmask ın 255.255.255.0 ayarlı durumda iken açmak istediğim pc nin mac adresinide biliyorum ve port numarasını 1 den tutunda 10 a kadar hatta 90 da denedim ve malesef 30 cm yanımdaki hibernate veya standbyda durup duran bilgisayarı bir türlü wake edemedim:(
umarım biraz daha saçlarımı yolmam ve bir çözüm bulurum ama delphi ile kesinlikle hazır programlarla değil. Vede inşallah bu gidişle kel kalmam.

sağlık, başarı ve mutlulukdileklerimle....
Cevapla