recv and errno during a connection reset/closed by peer

Peter A. Castro doctor@fruitbat.org
Wed Mar 30 13:40:00 GMT 2005


On Tue, 29 Mar 2005, Peter Stephens wrote:

> Peter,

Hi Peter :)

> I have thought about your suggestion and it makes a lot of sense.  If I
> understand correctly this is what you are thinking about:

Yes, this is pretty similar to how I've solve this before.  It's a good
compromise for an (arguably) imperfect interface.

>   int I = 0;
> << another new line
>   do{
>     ret_val = recv(afd, buf, MAX_BUF, MSG_PEEK);
>     if(0 > ret_val)
>       err(" >>> ERRNO");
>     else if(0 == ret_val){						<<
> new lines start here
>       if(100 < i++)
>          done = -1;
>     }
> << new lines end here
>     else if(ret_val > 0){
>       i = 0;
> << another new line
>       show_status(afd);
>       ret_val = recv(afd, buf, MAX_BUF, 0);
>       buf[ret_val]='\0';
>       printf("(%i) \t> %s", ret_val, buf);
>     }
>     usleep(250);
>     if(!done)
> << another new line
>        done = handle_it(buf);
>   }while(!done);
>
> It seems like your suggestion would be very portable.  A good suggestion and
> the most likely route for me at this point.

I hope it does the job for you.

> Peter A. Stephens
> ptfoof@sbcglobal.net

-- 
Peter A. Castro <doctor@fruitbat.org> or <Peter.Castro@oracle.com>
 	"Cats are just autistic Dogs" -- Dr. Tony Attwood

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list