socketpool
The socketpool
module provides sockets through a pool. The pools themselves
act like CPython’s socket
module.
For more information about the socket
module, see the CPython documentation:
https://docs.python.org/3/library/socket.html
Available on these boards
- class socketpool.Socket
TCP, UDP and RAW socket. Cannot be created directly. Instead, call
SocketPool.socket()
.Provides a subset of CPython’s
socket.socket
API. It only implements the versions of recv that do not allocate bytes objects.- __exit__() None
Automatically closes the Socket when exiting a context. See Lifetime and ContextManagers for more info.
- accept() Tuple[Socket, Tuple[str, int]]
Accept a connection on a listening socket of type SOCK_STREAM, creating a new socket of type SOCK_STREAM. Returns a tuple of (new_socket, remote_address)
- bind(address: Tuple[str, int]) None
Bind a socket to an address
- Parameters:
address (~tuple) – tuple of (remote_address, remote_port)
- connect(address: Tuple[str, int]) None
Connect a socket to a remote address
- Parameters:
address (~tuple) – tuple of (remote_address, remote_port)
- listen(backlog: int) None
Set socket to listen for incoming connections
- Parameters:
backlog (~int) – length of backlog queue for waiting connections
- recvfrom_into(buffer: circuitpython_typing.WriteableBuffer) Tuple[int, Tuple[str, int]]
Reads some bytes from a remote address.
Returns a tuple containing * the number of bytes received into the given buffer * a remote_address, which is a tuple of ip address and port number
- Parameters:
buffer (object) – buffer to read into
- recv_into(buffer: circuitpython_typing.WriteableBuffer, bufsize: int) int
Reads some bytes from the connected remote address, writing into the provided buffer. If bufsize <= len(buffer) is given, a maximum of bufsize bytes will be read into the buffer. If no valid value is given for bufsize, the default is the length of the given buffer.
Suits sockets of type SOCK_STREAM Returns an int of number of bytes read.
- send(bytes: circuitpython_typing.ReadableBuffer) int
Send some bytes to the connected remote address. Suits sockets of type SOCK_STREAM
- Parameters:
bytes (~bytes) – some bytes to send
- sendall(bytes: circuitpython_typing.ReadableBuffer) None
Send some bytes to the connected remote address. Suits sockets of type SOCK_STREAM
This calls send() repeatedly until all the data is sent or an error occurs. If an error occurs, it’s impossible to tell how much data has been sent.
- Parameters:
bytes (~bytes) – some bytes to send
- sendto(bytes: circuitpython_typing.ReadableBuffer, address: Tuple[str, int]) int
Send some bytes to a specific address. Suits sockets of type SOCK_DGRAM
- Parameters:
bytes (~bytes) – some bytes to send
address (~tuple) – tuple of (remote_address, remote_port)
- class socketpool.SocketPool(radio: wifi.Radio)
A pool of socket resources available for the given radio. Only one SocketPool can be created for each radio.
SocketPool should be used in place of CPython’s socket which provides a pool of sockets provided by the underlying OS.
Create a new SocketPool object for the provided radio
- Parameters:
radio (wifi.Radio) – The (connected) network hardware to associate with this SocketPool; currently, this will always be the object returned by
wifi.radio
- socket(family: int = AF_INET, type: int = SOCK_STREAM) Socket
Create a new socket
- Parameters:
family (~int) – AF_INET or AF_INET6
type (~int) – SOCK_STREAM, SOCK_DGRAM or SOCK_RAW
The
proto
(protocol) andfileno
arguments available insocket.socket()
in CPython are not supported.
- getaddrinfo(host: str, port: int, family: int = 0, type: int = 0, proto: int = 0, flags: int = 0) Tuple[int, int, int, str, Tuple[str, int]]
Gets the address information for a hostname and port
Returns the appropriate family, socket type, socket protocol and address information to call socket.socket() and socket.connect() with, as a tuple.