Source code for emlib.net

"""
Utility functions related to network (find a port, create a udp server, etc)
"""
from __future__ import annotations
import socket
from typing import Optional as Opt


[docs] def findport() -> int: """ Find a free port (for UDP communication) Returns: the port number Raises XXX if no ports available """ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.bind(('', 0)) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) return s.getsockname()[1] except Exception as e: s.close() raise e
[docs] def udpsocket() -> socket.socket: """ Creates a UDP socket Returns: a socket Example:: # send some data sock = udpsocket() sock.sendto(b"mymessage", ('192.168.1.3', 8888)) """ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return sock
[docs] def udpserver(port: int, addr='127.0.0.1') -> socket.socket: """ Create a udp server Args: port: the port to listen to addr: the server address Example:: # receive some data sock = udpserver(8888) while True: # bufsize = 1024 data, addr = sock.recvfrom(1024) https://wiki.python.org/moin/UdpCommunication """ sock = udpsocket() sock.bind((addr, port)) return sock