c - Reading packets from a client stops after 1 or 2 received -
i'm writing server program in c read commands client. commands in form of 5 byte packets, , client sending bunch of them in succession. code have read each command is:
while(1) { char buffer[1024]; int alreadyread = 0; int socket = dequeue(); while(alreadyread != 5) { { nowread = read(socket,buffer+alreadyread,5-alreadyread); alreadyread += nowread; } while((nowread > 0) && (5-alreadyread > 0)); if(nowread == -1 || nowread == 0) { printf("error reading client socket\n"); exit(1); } //do command
but doesn't seem work: if client sends 10 packets, read 1 or 2 , segfault. have idea why?
the while (alreadyread != 5)
seems extraneous since alreadyread
5 or nowread
less 0 after do-while, , if nowread
less 0 exit.
you've poorly defined command, think need more information on that.
it looks you're getting new socket after each command. if it's 1 client sending commands, should keep socket until commands want. should close
socket after done don't run out of file descriptors.
the segfault caused area of program haven't shown.
Comments
Post a Comment