Seite 1 von 1
Daten umsetzen zum versenden.
Verfasst: 19.10.2013 23:17
von funkheld
Hallo, guten Tag.
Ich möchte Daten versenden nach diesem Prinzip:
Code: Alles auswählen
n=len(cmd)
b = bytes((n>>b)&0xff for b in (24,16,8,0))
s.sendall(b+bytes(cmd,'utf-8'))
Wie kann man bitte dieses Komplizierte in Purebasic umsetzen ?
Es geht über den Client-Localhost 127.0.0.1 mit der Portnummer 42001
Es ist für Scratch 1.4
Danke.
Gruss
Re: Daten umsetzen zum versenden.
Verfasst: 19.10.2013 23:23
von mirca
Ich kenn Scratch nicht aber du kannst RunProgram("cmd.exe", "/c BEFEHL") ausführen.
Mit #PB_Program_Open und #PB_Program_Read kannst du den Output empfangen.
Gibts in der Hilfe von RunProgram auch ein Beispiel code.
PS: Du hast eine PN von mir bekommen.

Re: Daten umsetzen zum versenden.
Verfasst: 20.10.2013 14:24
von funkheld
Jup, danke.
Ich habe jetzt eine einfachere Variante von Python oben bekommen.
Wie kann man die jetzt bitte umsetzen in Purebasic ?
Danke.
Gruss
Re: Daten umsetzen zum versenden.
Verfasst: 20.10.2013 17:09
von Danilo
funkheld hat geschrieben:Ich habe jetzt eine einfachere Variante von Python oben bekommen.
Wie kann man die jetzt bitte umsetzen in Purebasic ?
Code: Alles auswählen
Structure SendArray
length.a[4]
command.a[0]
EndStructure
cmd.s = "command"
n = Len(cmd)
*mem.SendArray = AllocateMemory(SizeOf(SendArray) + 3*n)
If *mem
*mem\length[0] = (n >> 24) & $FF
*mem\length[1] = (n >> 16) & $FF
*mem\length[2] = (n >> 8) & $FF
*mem\length[3] = (n ) & $FF
length = PokeS(@*mem\command[0],cmd,-1,#PB_UTF8)
length + 4
ShowMemoryViewer(*mem,length)
;SendNetworkData(clientID, *mem, length)
FreeMemory(*mem)
EndIf
Oder als Procedure:
Code: Alles auswählen
Structure SendArray
length.a[4]
command.a[0]
EndStructure
Procedure SendCommand(clientID,cmd.s)
Protected result,n,length,*mem.SendArray
n = Len(cmd)
*mem = AllocateMemory(SizeOf(SendArray) + 3*n)
If *mem
*mem\length[0] = (n >> 24) & $FF
*mem\length[1] = (n >> 16) & $FF
*mem\length[2] = (n >> 8) & $FF
*mem\length[3] = (n ) & $FF
length = PokeS(@*mem\command[0],cmd,-1,#PB_UTF8)
length + 4
ShowMemoryViewer(*mem,length)
If clientID
If SendNetworkData(clientID, *mem, length) = length
result = #True
EndIf
EndIf
FreeMemory(*mem)
EndIf
ProcedureReturn result
EndProcedure
ok = SendCommand(clientID,"command")
Debug ok
Re: Daten umsetzen zum versenden.
Verfasst: 20.10.2013 17:50
von funkheld
Hallo, es funktioniert jetzt.
Danke für deine Hilfe.
Das ist wunderbar.
Gruss