ich habe mal wieder ein Problem. Folgender Code funktioniert unter Win7 32Bit/64Bit mit PB5.31 x86/x64 ... das Packet wird erzeugt, versendet und weckt den angegebenen Rechner auf. Allerdings funktioniert unter Windows nicht "255.255.255.255" (die Verbindung kann nicht geöffnet werden), aber das eigene Subnet reicht mir

unter Linux Ubuntu 14.04/amd64 und 14.10/i386 mit PB 5.31 x86/x64 geht gar nichts, d.h. er sendet kein einziges Byte.
Weiß jemand Rat?
Code: Alles auswählen
Structure MacAddress
Byte.b[6]
EndStructure
Structure MagicPacket
Header.b[6]
Mac.MacAddress[16]
EndStructure
Structure MacAdress_Stringfields
Byte1.s{2}
Seperator1.s{1}
Byte2.s{2}
Seperator2.s{1}
Byte3.s{2}
Seperator3.s{1}
Byte4.s{2}
Seperator4.s{1}
Byte5.s{2}
Seperator5.s{1}
Byte6.s{2}
EndStructure
Structure MacAddress_String
StructureUnion
Stringfields.MacAdress_Stringfields
Mac.s{17}
EndStructureUnion
EndStructure
; *dest = Address with MacAddress-Structure
; Mac.s = MacAddress (11:22:33:44:55:66 or 11-22-33-44-55-66)
Procedure createMacAdress(*Dest.MacAddress, Mac.s)
Protected Mac_String.MacAddress_String
Mac_String\Mac = Mac
*dest\Byte[0] = Val("$" + Mac_String\Stringfields\Byte1)
*dest\Byte[1] = Val("$" + Mac_String\Stringfields\Byte2)
*dest\Byte[2] = Val("$" + Mac_String\Stringfields\Byte3)
*dest\Byte[3] = Val("$" + Mac_String\Stringfields\Byte4)
*dest\Byte[4] = Val("$" + Mac_String\Stringfields\Byte5)
*dest\Byte[5] = Val("$" + Mac_String\Stringfields\Byte6)
ProcedureReturn #True
EndProcedure
; *Dest = Address with MagicPacket-Structure
; *Mac = Address with MacAddress-Structure and filled with createMacAddress()
Procedure createMagicPacket(*Dest.MagicPacket, *Mac.MacAddress)
Protected i.b, j.b
For i = 0 To 5 ; create Header of Packet ($FFFFFFFFFFFF)
*Dest\Header[i] = $FF
Next
For i = 0 To 15 ; create 16 x MacAdress
For j = 0 To 5
*Dest\Mac[i]\Byte[j] = *Mac\Byte[j]
Next j
Next i
ProcedureReturn #True
EndProcedure
Procedure sendMagicPacket(*MagicPacket.MagicPacket, Host.s = "255.255.255.255", Port = 0)
Protected cID
Protected sendBytes.w
Protected BufferLength = SizeOf(MagicPacket)
cID = OpenNetworkConnection(Host, Port, #PB_Network_UDP)
If cID
sendBytes = SendNetworkData(cID, *MagicPacket, BufferLength)
If sendBytes = -1
Debug "sendMagicPacket: no Data transmitted"
CloseNetworkConnection(cID)
ProcedureReturn #False
ElseIf sendBytes = BufferLength
CloseNetworkConnection(cID)
ProcedureReturn sendBytes
Else
Debug "sendMagicPacket: tData/Bufferlength: " +
Str(sendBytes) + "/" + Str(BufferLength)
EndIf
Else
Debug "sendMagicPacket: open Network Conection ERROR"
ProcedureReturn #False
EndIf
ProcedureReturn #False
EndProcedure
; MAIN
; -------------------------------------
Define MagicPacket.MagicPacket, Mac.MacAddress
If InitNetwork()
createMacAdress(@Mac, "11-22-33-44-55-66")
createMagicPacket(@MagicPacket, @Mac)
sendMagicPacket(@MagicPacket, "192.255.255.255")
EndIf
; --------------------------------------