예제 #1
0
 def test_datagram_protocol(self):
     f = mock.Mock()
     dp = asyncio.DatagramProtocol()
     self.assertIsNone(dp.connection_made(f))
     self.assertIsNone(dp.connection_lost(f))
     self.assertIsNone(dp.error_received(f))
     self.assertIsNone(dp.datagram_received(f, f))
     self.assertFalse(hasattr(dp, '__dict__'))
예제 #2
0
 async def start(self, loop=None):
     loop = loop or compat.get_running_loop()
     await self._getaddrinfo(loop)
     self.transport, _ = await loop.create_datagram_endpoint(
         lambda: asyncio.DatagramProtocol(),
         family=socket.AF_INET,
         allow_broadcast=False,
     )
예제 #3
0
async def create_mdns_protocol() -> MDnsProtocol:
    """
    Using a single socket works fine on Linux, but on OS X we need to use
    separate sockets for sending and receiving.
    """
    loop = asyncio.get_event_loop()

    # sender

    tx_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    tx_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    if hasattr(socket, "SO_REUSEPORT"):
        tx_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
    tx_sock.bind(("", MDNS_PORT))

    tx_transport, _ = await loop.create_datagram_endpoint(
        lambda: asyncio.DatagramProtocol(),
        sock=tx_sock,
    )

    # receiver

    rx_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    rx_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    if hasattr(socket, "SO_REUSEPORT"):
        rx_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
    rx_sock.setsockopt(
        socket.IPPROTO_IP,
        socket.IP_ADD_MEMBERSHIP,
        socket.inet_aton(MDNS_ADDRESS) + b"\x00\x00\x00\x00",
    )
    if sys.platform == "win32":
        rx_sock.bind(("", MDNS_PORT))
    else:
        rx_sock.bind((MDNS_ADDRESS, MDNS_PORT))

    _, protocol = await loop.create_datagram_endpoint(
        lambda: MDnsProtocol(tx_transport=cast(asyncio.DatagramTransport,
                                               tx_transport)),
        sock=rx_sock,
    )

    return cast(MDnsProtocol, protocol)
예제 #4
0
파일: t.py 프로젝트: luyuhao98/FAC_myserver
async def async_main():
    b4.udp_transport, b4.udp_protocol = await b4.loop.create_datagram_endpoint(
        lambda: asyncio.DatagramProtocol(),
        local_addr=('127.0.0.1', 8998),
        remote_addr=('127.0.0.1', 8999))