# --------------------------------------------------------------------------- # Transport over Network # --------------------------------------------------------------------------- import socket from transport import GnssTransport class TcpTransport(GnssTransport): def __init__(self, host: str, port: int, timeout: float = 5.0): self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._sock.settimeout(timeout) self._sock.connect((host, port)) self._sock.settimeout(1.0) def read(self, n: int) -> bytes: try: return self._sock.recv(n) except socket.timeout: return b"" def write(self, data: bytes) -> None: self._sock.sendall(data) def close(self) -> None: try: self._sock.shutdown(socket.SHUT_RDWR) except OSError: pass self._sock.close()