Exemplo n.º 1
0
def inet_pton(address_family, ip_string, encoding="UTF-8"):
    addr = sockaddr()
    addr.sa_family = address_family
    addr_size = c_int(sizeof(addr))

    if WSAStringToAddressA(ip_string.encode(encoding), address_family, None,
                           byref(addr), byref(addr_size)) != 0:
        raise socket.error(FormatError())

    if address_family == socket.AF_INET:
        return string_at(addr.ipv4_addr, 4)
    if address_family == socket.AF_INET6:
        return string_at(addr.ipv6_addr, 16)

    raise socket.error('unknown address family')
Exemplo n.º 2
0
def inet_ntop(address_family, packed_ip, encoding="UTF-8"):
    addr = sockaddr()
    addr.sa_family = address_family
    addr_size = c_int(sizeof(addr))
    ip_string = create_string_buffer(128)
    ip_string_size = c_int(sizeof(addr))

    if address_family == socket.AF_INET:
        if len(packed_ip) != sizeof(addr.ipv4_addr):
            raise socket.error('packed IP wrong length for inet_ntop')
        memmove(addr.ipv4_addr, packed_ip, 4)
    elif address_family == socket.AF_INET6:
        if len(packed_ip) != sizeof(addr.ipv6_addr):
            raise socket.error('packed IP wrong length for inet_ntop')
        memmove(addr.ipv6_addr, packed_ip, 16)
    else:
        raise socket.error('unknown address family')

    if WSAAddressToStringA(byref(addr), addr_size, None, ip_string,
                           byref(ip_string_size)) != 0:
        raise socket.error(FormatError())

    return (ip_string[:ip_string_size.value - 1]).decode(encoding)
Exemplo n.º 3
0
 def WinError(code=None, descr=None):
     if code is None:
         code = GetLastError()
     if descr is None:
         descr = FormatError(code).strip()
     return WindowsError(code, descr)
Exemplo n.º 4
0
 def WinError(code=None, descr=None):
     if code is None:
         code = GetLastError()
     if descr is None:
         descr = FormatError(code).strip()
     return OSError(None, descr, None, code)