help
Lev Walkin
vlm at netli.com
Tue Aug 19 12:10:28 PDT 2003
DANDY King wrote:
> hello
>
>
> our product is DVR(digital video recorder), it runs on linux system.
> i am sending very imp inofrmation to server through sockets. some time i
> am getting full data, some time i am getting partial data.
> i don't know reasons please advice.
> client side we uses VC++ GUI. client sending data neatly. in lcinet
> side what i did
>
> while((nread = read(fd,buff,BUFFSIZE)) >0)
> send(sockfd,buff,nread,0);
>
> in server same data should receive.
> but some time i am receiveing full and some time 90% only
Are you aware that the send() function could queue less data
than requested? The better loop would look like:
while((nread = read(fd, buff, BUFFSIZE)) > 0) {
ssize_t sent;
char *b = buff;
while(nread > 0) {
sent = send(sockfd, b, nread, 0);
if(sent > 0) {
nread -= sent;
b += sent;
} else {
/* Handle "can't send" case */
break;
}
}
}
> please advice
>
> Dharanish
>
> _________________________________________________________________
> Are you a geek? Do gizmos make you grin?
> http://www.msn.co.in/Computing/Gizmos/ Click here!
>
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
--
Lev Walkin
vlm at netli.com
More information about the freebsd-net
mailing list