Seite 1 von 3
netzwerk
Verfasst: 15.10.2006 16:10
von Killfrog
kann man den wert einer variablen mit nem befehl über das netzwerk zum host schicken?
also einfach die variable kopieren.
oder kann man nur strings rüberschicken?

Verfasst: 15.10.2006 16:56
von roherter
Ich könnte mir vorstellen das es mit
geht!
Verfasst: 15.10.2006 17:02
von Kaeru Gaman
stimmt, der befehl solle eigentlich irgendwelche zwischen-nullen ignorieren.
sende vielleicht dann besser komplette folgen von werten, anstatt jeden einzeln.
Verfasst: 15.10.2006 17:20
von Killfrog
kann mir wer n kleines beispiel zur anwendung davon geben?
bei mir klappt das irgendwie nicht

Verfasst: 15.10.2006 17:24
von #NULL
[ich hoffe das stimmte jetzt:]
Code: Alles auswählen
varHere.b=33
SendNetworkData(Verbindung, @varHere, 1)
;oder
varHere.w=33
SendNetworkData(Verbindung, @varHere, 2)
;oder
varHere.l=33
SendNetworkData(Verbindung, @varHere, 4)
;oder
varHere.q=33
SendNetworkData(Verbindung, @varHere, 8)
Code: Alles auswählen
*buff=AllocateMemory(265)
If *buff ;....
ReceiveNetworkData(Verbindung, *buff, 256)
varThere.b=PeekB(*buff)
;oder
ReceiveNetworkData(Verbindung, *buff, 256)
varThere.w=PeekW(*buff)
;oder
ReceiveNetworkData(Verbindung, *buff, 256)
varThere.l=PeekL(*buff)
;oder
ReceiveNetworkData(Verbindung, *buff, 256)
varThere.q=PeekQ(*buff)
wobei man nätürlich keine variablen gleichen namen und verschiedenen typs deklarieren kann. 'Verbindug' ist auf beiden seiten natürlich auch verschieden.
Verfasst: 15.10.2006 18:40
von Killfrog
erstmal danke für die hilfe.... aber wie kann ich bestimmen welche variable geschickt wird?(also wie sehe ich welche grad ankommt im buffer)
sonst bekommt ja eine variable den wert von der falschen variable

Verfasst: 15.10.2006 19:30
von mknjc
Sen dem Client doch das du jetzt Variable b senden willst und wartest noch bis er sagt das er bereit zum Empfang ist.
Also:
b.l = -31835
Server --> Client: He ich sen jetz b ok?
Client --> Server: OK wenn du willst ich bin bereit.
Server --> Client: -31835
ist doch ganz einfach.
Mfg mknjc
Verfasst: 15.10.2006 19:33
von #NULL
na da brauchst du soetwas wie ein protokoll. bevor du ins telefon sprichst mußt du ja jemanden anrufen, und wenn bei ihm das telefon klingelt, weiß er dass du anrfust (vereinbarung/protokoll). du willst den wert ja aus einem bestimmten grund schicken, also aus einer bestimmten situation heraus. server und client müssen ja beide wissen worum es grad geht. der empfänger weiß zum beispiel was er bekommt, wenn er es vorher sowieso angefordert hat. oder du machst einfach einen header, der den wertebereich angibt, oder der generell auskunft gibt über die gesandten daten.
[ungetestet:]
Code: Alles auswählen
*buff=AllocateMemory(256) ; 9 byte würde hier auch reichen
If *buff
PokeB(*buff, SizeOf(var) )
PokeQ(*buff+1, var) )
erg=SendNetworkData(Verbindung, *buff, 9 )
If erg<>9
;...
Code: Alles auswählen
myByteVar.b
myLongVar.l
*buff=AllocateMemory(256)
If *buff
erg=ReceiveNetworkData(Verbindung, *buff, 9 )
If erg<>9
;...
Else
size=PeekB(*buff)
Select size
Case 1
myByteVar=PeekB((*buff+1)
Case 4
myLongVar=PeekL((*buff+1)
;...
ich verschicke hier immer 9 byte, wovon das erste byte speichert, um was es sich für eine variable handelt. du könntest in diesem byte ja auch werte wie -1 oder 1002 oder -45 speichern. wenn sender und empfänger jeder eine (die selbe) tabelle besitzen, die dem header wert bestimmte aktionen zuweist. dann weiß der empfänger immer "aha im headerbyte seht eine -12, also lese ich ab der headeraddresse+1 den wert für die user-anzahl in meine dafür vorgesehene variable vom typ long."
Verfasst: 15.10.2006 19:40
von Killfrog
schade hatte gehoft es ginge einfacher
aber wies aussieht muss ich doch wie ich zuanfang vermutet hatte so ein "versandsystem" basteln ^^
trotzdem danke an euch

Verfasst: 15.10.2006 19:57
von #NULL
wie kompliziert das wird, hängt nur davon ab wozu du es brauchst.
wenn du verrätst was du machen willst, kann man das vielleicht auch vereinfachen.