Seite 1 von 1

wak on lan

Verfasst: 21.03.2010 22:33
von frankmannb
Hallo an alle Forumsmitglieder,

ich plane mir eine kleines Programm zu schreiben welches nach Aufruf meinen Home-Server aufweckt. Ich weiss, es gibt im Netz schon Diverse wake on lan tools die aber alle ein Konsolenfenster anfordern und in Windows sichtbar machen. Mein Ziel ist es ohne cmd den Befehl abzusetzen weiss aber nicht wo ich da ansetzen kann. Über die Suchfunktion habe ich leider nichts brauchbares gefunden. Hat jemand von euch eine Idee?

Besten Dank und Grüße frankmannb

Re: wak on lan

Verfasst: 21.03.2010 22:40
von Josh
schon mal die suche mit wake on lan probiert? zumindest im englischen forum hab ich auf die schnelle was gefunden. wie brauchbar das ist, ist ne andere frage.

am besten verwendest du immer die bessere forensuche

Re: wak on lan

Verfasst: 21.03.2010 22:50
von NicTheQuick
Du kannst auch von PB aus einfach die cmd-Befehle aufrufen und die Ausgabe des Programms ins Nichts umleiten. Dann sieht man auch nichts.

Re: wak on lan

Verfasst: 21.03.2010 23:30
von frankmannb
@Josh

vielen Dank, tatsächlich findet die erweiterte Suche mehr als die einfache. Habe dank dir ein kleines Script gefunden welches ich entsprechend für mich umprogrammiert habe. Hier für alle die villeicht mal auf das gleiche Problem stossen.

Code: Alles auswählen

InitNetwork()

; Hier Mac-Adresse und IP-Broadcastadresse angeben
MacAdress$ = "00-15-17-31-BC-B9"
BroadCast$ = "192.168.178.255"


Structure mac
  mac1.b[6]                                               ; MAC Adress is 6 Bytes long
EndStructure

Structure magic
  magic1.b[102]                                           ; Magic Packet 6x$FF 16xMAC = 102 Bytes
EndStructure


Procedure.s WOL_Storemac(macadress$,*mac_adress.mac)
  Protected pointer1.b=0
  Protected pointer2.b=0
  Protected value.b=0
  Protected tmac.l=0
  Protected wert.l=0
  Protected a$=""
 
  For i=1 To Len(macadress$)
    a$=Mid(macadress$,i,1)
    value=0
    If a$>="0" And a$=<"9"
      wert=Asc(a$)-48
      value=1
    EndIf
    If a$>="a" And a$=<"f"
      wert=Asc(a$)-87
      value=1
    EndIf
    If a$>="A" And a$=<"F"
      wert=Asc(a$)-55
      value=1
    EndIf
    If value = 1
      If pointer1=0
        tmac=tmac+wert*16
      Else
        tmac=tmac+wert
      EndIf
      pointer1+1
      If pointer1>1
        *mac_adress\mac1[pointer2]=tmac
        pointer1=0
        pointer2+1
        tmac=0
      EndIf
    EndIf
  Next
EndProcedure

Procedure.l WOL_SendMagicPacket(macadress$,client_ip.s="255.255.255.255")
  Protected mac_adress.mac
  Protected Success.l=0
  Protected client_bip.l
  Protected client_port.l
  Protected client_bport.w
  Protected client_socket.l
  Protected socket_keepalive.b
  Protected server_mode.l
  Protected magic_packet.magic
 
  WOL_Storemac(macadress$,@mac_adress)
 
  For j=0 To 16
    debugmac$=""
    For i=0 To 5
      If j=0
        magic_packet.magic\magic1[i+j*6] = 255
      Else
        magic_packet.magic\magic1[i+j*6] = mac_adress.mac\mac1[i]
      EndIf
      debugmac$+RSet(Hex(magic_packet.magic\magic1[i+j*6]),3,"00 ")
    Next
    Debug RSet(Hex(j*6),2,"0")+":"+debugmac$
  Next
 
  client_bip = inet_addr_(client_ip)
  client_port = 0
  client_bport = htons_(client_port) ; convert to long
  client_socket = SOCKET_(#AF_INET, #SOCK_DGRAM, #IPPROTO_UDP) ; create the socket
  If client_socket
    socket_keepalive = 1
    If setsockopt_(client_socket, #SOL_SOCKET, #SO_BROADCAST, @socket_keepalive, 1) = 0
      client_sockaddr.SOCKADDR_IN
      client_sockaddr\sin_family = #AF_INET
      client_sockaddr\sin_port = client_bport
      client_sockaddr\sin_addr = client_bip
      server_mode = 0
      If ioctlsocket_(client_socket,#FIONBIO,@server_mode) = 0
        send.l = sendto_(client_socket, @magic_packet, SizeOf(magic_packet), 0, @client_sockaddr, 16)
        If send=SizeOf(magic_packet) And WSAGetLastError_()=0
          Debug "Magic packet send"
          Success=1
        EndIf
      EndIf
    EndIf
   
    closesocket_(client_socket)
  EndIf
 
  ProcedureReturn Success
EndProcedure

WOL_SendMagicPacket(MacAdress$,BroadCast$)
Codetags ergänzt (Code-Button oben)
-Andesdaf

Re: wak on lan

Verfasst: 21.03.2010 23:35
von a14xerus
testen kann ich das grad leider nicht, aber mal so allgemein:
Bitte die

Code: Alles auswählen

Code-tags
benutzen :)

//edit für josh: die einrückungen sind nur sichtbar wenn man die code.tags beuntzt... ohen tags werdne leerezeichen einfach ignoriert (is so eine html-sache ;) )

Re: wak on lan

Verfasst: 21.03.2010 23:38
von Josh
a14xerus hat geschrieben:testen kann ich das grad leider nicht, aber mal so allgemein:
Bitte die

Code: Alles auswählen

Code-tags
benutzen :)
und :roll: einrückungen