pynetdicom.transport.AssociationSocket#

class pynetdicom.transport.AssociationSocket(assoc: Association, client_socket: socket | None = None, address: AddressInformation | None = None)[source]#

A wrapper for a socket object.

Provides an interface for socket that is integrated nicely with an Association instance and the state machine.

Changed in version 3.0: Added support for IPv6 addresses.

select_timeout#

The timeout (in seconds) that select.select() calls in ready() will block for (default 0.5). A value of 0 specifies a poll and never blocks. A value of None blocks until a connection is ready.

Type:

float or None

socket#

The wrapped socket, will be None if close() is called.

Type:

socket.socket or None

__init__(assoc: Association, client_socket: socket | None = None, address: AddressInformation | None = None) None[source]#

Create a new AssociationSocket.

Changed in version 3.0: address now takes an AddressInformation instance.

Parameters:

Methods

__init__(assoc[, client_socket, address])

Create a new AssociationSocket.

close()

Close the connection to the peer and shutdown the socket.

connect(primitive)

Try and connect to a remote using connection details from primitive.

get_local_addr([host])

Return an address for the local computer as str.

recv(nr_bytes)

Read nr_bytes from the socket.

send(bytestream)

Try and send the data in bytestream to the remote.

Attributes

assoc

Return the parent Association instance.

event_queue

Return the Association's service event queue.

provider_queue

Return the Association's service provider queue.

ready

Return True if there is data available to be read.

tls_args

Get or set the TLS context and hostname.

property assoc: Association#

Return the parent Association instance.

close() None[source]#

Close the connection to the peer and shutdown the socket.

Sets AssociationSocket.socket to None once complete.

Events Emitted

  • Evt17: Transport connection closed

connect(primitive: T_CONNECT) None[source]#

Try and connect to a remote using connection details from primitive.

Changed in version 2.0: Changed to take a T_CONNECT primitive rather than an address tuple.

Parameters:

primitive (pynetdicom.transport.T_CONNECT) – The TRANSPORT CONNECT primitive to use when connecting to a peer.

property event_queue: Queue[str]#

Return the Association’s service event queue.

get_local_addr(host: tuple[str, int] = ('10.255.255.255', 1)) str[source]#

Return an address for the local computer as str.

Deprecated since version 3.0: This method will be removed in v4.0.

Parameters:

host (tuple[str, int]) – The host’s IPv4 (addr: str, port: int) used when trying to determine the local address.

property provider_queue: _QueueType#

Return the Association’s service provider queue.

property ready: bool#

Return True if there is data available to be read.

Events Emitted

  • None

  • Evt17: Transport connection closed

Returns:

True if the socket has data ready to be read, False otherwise.

Return type:

bool

recv(nr_bytes: int) bytearray[source]#

Read nr_bytes from the socket.

Events Emitted

  • None

Parameters:

nr_bytes (int) – The number of bytes to attempt to read from the socket.

Returns:

The data read from the socket.

Return type:

bytearray

send(bytestream: bytes) None[source]#

Try and send the data in bytestream to the remote.

Events Emitted

  • None

  • Evt17: Transport connected closed.

Parameters:

bytestream (bytes) – The data to send to the remote.

property tls_args: tuple[ssl.SSLContext, str] | None#

Get or set the TLS context and hostname.

Parameters:

tls_args (tuple[ssl.SSLContext, str] or None) – If the socket should be wrapped by TLS then this is (context, hostname), where context is a ssl.SSLContext that will be used to wrap the socket and hostname is the value to use for the server_hostname keyword argument for SSLContext.wrap_socket().

Return type:

tuple[ssl.SSLContext, str] | None