实现python的socket.gethostbyname

时间:2019-05-22 16:12:45

标签: python sockets dns

我想实现python的socket.gethostbyname。

我试图理解源代码(https://github.com/python/cpython/blob/67e1478dba6efe60b8e1890192014b8b06dd6bd9/Modules/socketmodule.c),但并没有真正理解它的工作原理和实现方式。

/*ARGSUSED*/
static PyObject *
socket_gethostbyname(PyObject *self, PyObject *args)
{
    char *name;
    sock_addr_t addrbuf;
    PyObject *ret = NULL;

    if (!PyArg_ParseTuple(args, "et:gethostbyname", "idna", &name))
        return NULL;
    if (setipaddr(name, SAS2SA(&addrbuf),  sizeof(addrbuf), AF_INET) < 0)
        goto finally;
    ret = makeipaddr(SAS2SA(&addrbuf), sizeof(struct sockaddr_in));
finally:
    PyMem_Free(name);
    return ret;
}

0 个答案:

没有答案