> Är inte det lite "nybörjarfasoner"?
Nej. Definiera ett enkelt meddelandeformat som ett paket med enbart "skrivbara tecken".
D.v.s att du konverterar dina numeriska värden till ASCII hex 30-39. Plus eventuell
annan text som du också vill överföra. Ge det en fast längd och kända start och slut
tecken. Om du vill, en checksumma före sluttecknet, men behövs sällan idag, det
finns checksummor i underliggande protokoll, så det blir mer en kontroll av att
sändaren inte har gjort något fel.
När du kör på socket nivå så finns det ingen direkt koppling mellan vad som
sänds från ena sidan och vad du får hos mottagaren. Det du sänder kan komma
som två paket till mottagaren. På samma sätt kan två sändningar returneras
i samma "recv" anrop. Det är du som måste ha koll och pussla ihop det.
Eller om det står här:
https://docs.python.org/2/howto/sockets.html:
"But if you plan to reuse your socket for further transfers, you need to realize that
there is no EOT on a socket. I repeat: if a socket send or recv returns after handling
0 bytes, the connection has been broken. If the connection has not been broken, you
may wait on a recv forever, because the socket will not tell you that there’s nothing more
to read (for now). Now if you think about that a bit, you’ll come to realize a fundamental
truth of sockets: messages must either
be fixed length (yuck), or
be delimited (shrug),
or
indicate how long they are (much better), or
end by shutting down the connection.
The choice is entirely yours, (but some ways are righter than others)."
Om du inte har har en nätverksnivå där du t.ex kan sätta en terminator för läsningen, så
får du hantera det själv. Kolla gärna sidan ovan, den beskriver ganska väl på ett generellt
sätt vad man behöver tänka på, oavsett om det är Python eller inte. Och om man inte har
någon "terminal driver" eller liknande i OS'et som hanterar detaljerna åt en.
Och precis som lillahuset så har jag samma erfarenhet efter att byggt kommunikationsprogram
för produktionsutrustning i 35 år. KISS! Att skicka läsbar ASCII underlättar oerhört då man
debuggar. Bara att dumpa paketen i en logfil och läsa det direkt...