[help] recv

07/17/2009 15:45 kalhacker9000#1
Soo,
man man behinderter tag.
naja wayne.
bin grad dabei mich etwas mehr mit den recv packets außeinander zu setzen.
unter anderem mit den zahlen dahinter.
Borsti sagte das ist die größe (size)
naja also ich hab mir das mal als hex ausgeben lassen (das packet für empfangene nachrichten im chat [0x3c] )
ich hab mir das folgendermaßen "notiziert"
PHP Code:
0c 00 3c //size
44 65 6e 4a 61 73//name
00
61  
//message
00
00 
ist ja soweit auch richtig.
gut den namen krieg ich folgerndermaßen raus:
PHP Code:
memcpy((void*)&nameplayer,(void*)((DWORD)buf2+3),16); 
ich hab als size jetzt 16 genommen hab mir das bei player[i].name abgeguckt wusste nicht was ich nehmen sollte. 16 klappt aber gut.
bekomme auch den namen ^^.

+3 denke ich mal wegen "0c 00 3c" sind 3 stellen deswegen + 3 dann kommt er du "44 ...."

so jetzt will ich aber die nachricht rausfiltern.

61 ist die nachricht...61 --> char = "a"
das ist auch das was ich geschrieben hab.
gut jetzt will ich mir das in der cmd ausgeben lassen...ich habs folgendermaßen probiert:
PHP Code:
memcpy((void*)&message111,(void*)((DWORD)buf2+3+16),4); 
wie ich auf die 4 kam? keine ahnung hab mir das von x,y,z abgeguckt.
naja ergebnis? 0!
ich bekomme nix erst wenn ich 123456789123456789123456789 schreibe bekomme ich z.B. 456789 raus also das ganz letzte.

jetzt ist meine frage:

wieso? was habe ich mit den + zahlen falsch gemacht?

haunse rein
Diamond
07/17/2009 19:24 kalhacker9000#2
habs...
PHP Code:
memcpy((void*)&nameplayer,(void*)((DWORD)buf2+3),16); 
memcpy((void*)&message111,(void*)((DWORD)buf2+3+1+6),4); 
allerdings noch nich getestet mach ich aber jetzt xD

edit:
geht...als size von message hab ich allerdings 60 genommen :D:D ist nicht abzuschätzen wieviel jemand schreibt...naja ist auch nur als test gewesen wollte wissen wie man auf die zahlen kommt.
08/02/2009 12:35 Xorg#3
PHP Code:
    memcpy((void*)&(Message.Name),(void*)((DWORD)packet+3),16); 
    
int len;
    
len strlen (Message.Name);    
    
memcpy((void*)&(Message.Content),(void*)((DWORD)packet+3+1+len),255); 
    
printf("Name: %s, Content: %s\n"Message.NameMessage.Content); 
This works for sure. Tested ;)
08/02/2009 15:04 kalhacker9000#4
my worked already ^^
but thx...don't needed anymore.
it was only a lil test..