From owner-freebsd-net@FreeBSD.ORG Tue Aug 19 12:10:28 2003 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 103EE16A4BF for ; Tue, 19 Aug 2003 12:10:28 -0700 (PDT) Received: from smtp.netli.com (ip2-pal-focal.netli.com [66.243.52.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id 32B5643F3F for ; Tue, 19 Aug 2003 12:10:27 -0700 (PDT) (envelope-from vlm@netli.com) Received: (qmail 6013 invoked by uid 84); 19 Aug 2003 19:10:26 -0000 Received: from vlm@netli.com by l3-1 with qmail-scanner-0.96 (uvscan: v4.1.40/v4121. . Clean. Processed in 0.147365 secs); 19 Aug 2003 19:10:26 -0000 Received: from unknown (HELO netli.com) (172.17.1.12) by mx01-pal-lan.netli.lan with SMTP; 19 Aug 2003 19:10:26 -0000 Message-ID: <3F42772A.9000106@netli.com> Date: Tue, 19 Aug 2003 12:14:50 -0700 From: Lev Walkin Organization: Netli, Inc. User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.3.1) Gecko/20030521 X-Accept-Language: ru, en-us, en MIME-Version: 1.0 To: DANDY King References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: freebsd-net@freebsd.org Subject: Re: help X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Aug 2003 19:10:28 -0000 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