AnonBird
AnonBird

Reputation: 656

socket python : recvfrom

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.

Upvotes: 7

Views: 8306

Answers (1)

freakish
freakish

Reputation: 56467

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

Upvotes: 8

Related Questions