7

I would like to know if socket.recvfrom in python is a blocking function ? I couldn't find my answer in the documentation If it isn't, what will be return if nothing is receive ? An empty string '' ? In the other case, if in fact, it is blocking, how can i do to put it as an unblocking function ? I heard about settimeout but I don't know if it is actually the right solution.

1 Answer 1

8

By default it is blocking. It can be turned into non-blocking via socket.setblocking(0) or (equivalently) socket.settimeout(0). In that case if there is nothing to receive it will throw socket.error exception.

See the docs:

  1. Python2: https://docs.python.org/2/library/socket.html#socket.socket.setblocking
  2. Python3:
    1. https://docs.python.org/3/library/socket.html#socket.socket.setblocking
    2. https://docs.python.org/3/library/socket.html#socket-timeouts
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.