Jag rekommenderar http://www.ecst.csuchico.edu/~beej/guide/net/
Där tror jag att det finns förklaringar och exempel på hur man undviker ditt problem. Kolla under avancerat.
Hej jag har har lite problem med sockets.
Jag har en som sänder och en som lyssnar.
Socketen kanalen är öppen hela tiden.
Och det är bara en som skickar hela tiden.
Jag har satt storlek på buffer och vart buffern skall ligga.
Jag skickar alltid en data sträng som har en bestämd storlek.
Så fort den går förbi recv så har den "oftast" fyllt bufferten.
Säg att den tar emot paket 1 = 256 k
2 = 256 k
3 = 256 k
Men helt plötsligt ibland så delas ett paket upp
4 = 136 k
5 = 120 k
Eftersom jag hanterar varje datapaket på ett speciellt sätt så leder detta till ett fel. Hur kan jag lösa detta?
for (;;) {
char *message = malloc(sizeof(DataPacket));
i = recv(fd_connection, &message, sizeof(DataPacket),0);
printf("reciving: %d \n",i);
if(i == 0) {
return NULL;
}
distrSocketMessageHandler(message);
}
Skall man t.ex. räkna på mottagna byte i "i" och börja så långt fram i bufferten och läsa in nästa gång om det inte överstiger det antal tecken som krävs för ett "DataPacket"
