On 01/-10/-28163 02:59 PM, Dwayne Blind wrote:
or rather

      timeout = s.gettimeout()
      b=time.clock()
      while time.clock()-b<3 :
           s.settimeout(3-time.clock()+b)
            try :
                data=s.recv(1024)
           except :
                break
      s.settimeout(timeout)

Sorry for all these messages

Dwayne


You accidentally top-posted, so I had to delete all the history.

Without knowing anything about "s", there are two problems with this logic:

1) if you loop through the while more than once, you'll be throwing out old data. So you might need something like data += s.recv(1024). Conversely, if an exception happens, data is completely undefined. Without defining a default value, your remaining code is likely to get an exception.

2) Your time spent might vary between 3 and 6 seconds. If you need a tighter control than that, play with the timeout a little. For example, you might want a 1/2 second timeout, and loop until the total is 3 seconds. That way the tolerance will be 3 to 3.5 seconds.

Bonus: I don't know the behavior of the object, so I don't know what state it's in after you timeout.

DaveA

--
--
da...@ieee.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to