This post was actually send before my thanks, you're right post.

You are right about copy and none

--Maarten
> copy returns none when there is no data
> query returns always true on an opened port regardless of the other side.
>
> So... question remains open.
>
> --Maarten
>
> > This is how my tcp-server deals with it
> >
> > wait-ports: none
> > listen-port: open/no-wait/direct/binary tcp://:9999
> > wait-ports: [ listen-port ]
> >
> > forever [
> >
> >     ; Perform asynch wait !!!
> >     wait wait-ports
> >
> >     ; Is port descriptor set ?
> >     if not ( none? ( wait [ 0 listen-port ] ) ) [
> >
> >             ; Add port to block
> >             append wait-ports first listen-port
> >     ]
> >
> >     ; Set scope of port checking
> >     check-ports: next wait-ports
> >
> >     ; Check port activity ?
> >     while [ ( length? check-ports ) > 0 ] [
> >
> >             conn: first check-ports
> >
> >             ; Is port still active ?
> >             either query conn [
> >
> >                     ; Port active  ... so check if any data to be read
> >                     either not ( none? ( wait [ 0 conn ] ) ) [
> >
> >                             ; Yes .. so determine size of data to be
> > read
> >                             readbuffer: copy #{}
> >                             readbuffer: copy conn
> >
> >                             ; If length is none? then connection has
> > been closed
> >                             either none? readbuffer [
> >
> >                                     ; Close down port and tidy up
> > wait-ports block entry
> >                                     close conn
> >                                     remove check-ports
> >
> >                             ] [
> >
> >
> >                                     ; Is this NOT a HTTP request ?
> >                                     either none? ( find readbuffer
> > "HTTP/1." ) [
> >
> >
> >                                             ; Remove data from port
> >                                             clear conn
> >
> >                                             ; Move onto next port
> >                                             check-ports: next
> > check-ports
> >
> >                                     ] [
> >
> >                                             ; HTTP request so detrmine
> > what to do ...
> >
> >                                             ; Remember it's a
> > non-persistent connection
> >                                             ; Tidy up
> >                                             clear conn
> >                                             close conn
> >
> >                                     ]
> >
> >                                     ; VIP - empty out buffer area !!!
> >                                     clear readbuffer
> >
> >                             ] ; end of either none? readbuffer
> >
> >                     ] [
> >                             check-ports: next check-ports
> >                     ]
> >
> >             ] [
> >
> >                     ; Port is no longer active !
> >
> >                     ; tidy up
> >                     clear conn
> >                     close conn
> >                     remove check-ports
> >
> >             ] ; end of query conn
> >
> >     ] ; end of while ( length? ...
> >
> > ]
> >
> > quit
> > -----Original Message-----
> > From: Maarten Koopmans [mailto:[EMAIL PROTECTED]]
> > Sent: 09 October 2001 10:00
> > To: [EMAIL PROTECTED]
> > Subject: [REBOL] Re: tcp port open?
> >
> >
> > I know.... but I can't see that in Rebol.
> >
> > I am thinking of adding 'persistent connections' to Rugby but I need to
> > know
> >
> > if the pipe is broken in order to do that.
> >
> > --Maarten
> >
> > On Tuesday 09 October 2001 10:53, you wrote:
> > > You should have receive a notification that the connection has dropped
> > > that's the nature of TCP!
> > >
> > >
> > > -----Original Message-----
> > > From: Petr Krenzelok [mailto:[EMAIL PROTECTED]]
> > > Sent: 09 October 2001 09:23
> > > To: [EMAIL PROTECTED]
> > > Subject: [REBOL] Re: tcp port open?
> > >
> > > Maarten Koopmans wrote:
> > > > Hi,
> > > >
> > > > Is there a way to now if a tcp port is open on both sides. So that a
> > >
> > > server
> > >
> > > > (or client) can see whether or not the other side of the pipe is
> > > > still
> > >
> > > open?
> > >
> > > I am not sure. Designing our camera we looked at Ethereal
> > > (http://www.ethereal.org) packet monitor, and TCP communication is
> > > several stages process of various ACK, SYN, RST, PSH, FIN type packets.
> > > There is
> >
> > no
> >
> > > real
> > > "connection" on the network, just packets sent here and there. That is
> > > why someone can watch your packets (sniff) and see what you are
> > > sending, if connected to the same network. So, alive connection is just
> > > some state in your
> > > tcp stack on your side, irrelevant to other side of "connection". There
> > > is also
> > > known case of semi-connection - e.g. one side timeouts, and the other
> > > side is
> > > still able to send packets, which are really delivered, just not
> > > probably processed.
> > >
> > > So, theoretically, if opposite side sends you FIN or RST assigned
> > > packet, you
> > > should note it. This question is, however, for Holger. We have 'query
> > > function
> > > available, maybe Rebol somehow knows, if opposite side closed the
> > > connection?
> > >
> > > -pekr-
> > >
> > > > Thanks,
> > > >
> > > > Maarten
> > > > --
> > > > To unsubscribe from this list, please send an email to
> > > > [EMAIL PROTECTED] with "unsubscribe" in the
> > > > subject, without the quotes.
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to