Date: Tue, 19 Aug 2003 12:14:50 -0700 From: Lev Walkin <vlm@netli.com> To: DANDY King <dandyking_18@hotmail.com> Cc: freebsd-net@freebsd.org Subject: Re: help Message-ID: <3F42772A.9000106@netli.com> In-Reply-To: <BAY1-F160aU83i9IiUS0001e4d8@hotmail.com> References: <BAY1-F160aU83i9IiUS0001e4d8@hotmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
--
Lev Walkin
vlm@netli.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F42772A.9000106>
