Vinnaren i pepparkakshustävlingen!
2009-04-24, 15:51
  #1
Medlem
f.d. pzhukkes avatar
Tjena!
Håller på att knacka lite sockets i python men har stött på ett problem.

Jag skickar meddelanden mellan client och server, problemet är att recv() buffrar ju den data den tar emot, och på så sätt så får jag felaktiva paket lite då och då.

Jag har läst och kommit fram till att jag måste skicka med en fixed-header på meddelandet som säger hur långt själva meddelandet är, typ: "0003hej".
Problemet är att jag inte vet hur jag ska gå till väga.

Så som jag har listat ut så måste jag först kolla upp 4 bytes för att få in "0003", sedan läsa in 3 bytes till, som innehåller "hej".

Hur ska jag göra?
Citera
2009-04-24, 16:15
  #2
Medlem
War Skeletons avatar
Nu är jag själv ny med python och har aldrig programmerat med sockets. Men du kanske letar efter en funktion som slice?

Kod:
message = "0003hej"

print message[:4]
print message[4:]

Ger outputen:

0003
hej

Mer information om slice finns på: http://www.java2s.com/Code/Python/St...tringSlice.htm
Citera
2009-04-24, 16:21
  #3
Medlem
War Skeletons avatar
Och när jag tänker efter så kanske det räcker med att räkna antal tecken, eftersom att en sträng är en lista med chars:

Kod:
message = "hejsan"

print len(message)

Ger outputen:

6
Citera
2009-04-24, 19:08
  #4
Medlem
Serversidan får väl köra med socket.send(string) där? Samtidigt som clienten lägger på socket.recv(1024). Lycka till
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback