[Python-Dev] More socket questions (original) (raw)
Mihai Ibanescu misa@redhat.com
Thu, 10 Apr 2003 15:29:20 -0400 (EDT)
- Previous message: [Python-Dev] Re: _socket efficiency ideas
- Next message: [Python-Dev] More socket questions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hello,
Since somebody mention inet_addr, here's something else that I can attempt to fix if we agree on it.
In python 2.2.2:
socket.inet_aton("255.255.255.255") Traceback (most recent call last): File "", line 1, in ? socket.error: illegal IP address string passed to inet_aton
Implementation:
static PyObject* PySocket_inet_aton(PyObject *self, PyObject *args) { #ifndef INADDR_NONE #define INADDR_NONE (-1) #endif
/* Have to use inet_addr() instead */
char *ip_addr;
unsigned long packed_addr;
if (!PyArg_ParseTuple(args, "s:inet_aton", &ip_addr)) {
return NULL;
}
#ifdef USE_GUSI1 packed_addr = inet_addr(ip_addr).s_addr; #else packed_addr = inet_addr(ip_addr); #endif
if (packed_addr == INADDR_NONE) { /* invalid address */
PyErr_SetString(PySocket_Error,
"illegal IP address string passed to inet_aton");
Reason for this behaviour can be found in the man page for inet_addr:
The inet_addr() function converts the Internet host
address cp from numbers-and-dots notation into binary data
in network byte order. If the input is invalid,
INADDR_NONE (usually -1) is returned. This is an obsolete
interface to inet_aton, described immediately above; it is
obsolete because -1 is a valid address (255.255.255.255),
and inet_aton provides a cleaner way to indicate error
return.
I propose that we use inet_aton to implement PySocket_inet_aton (am I clever or what). The part that I don't know, how portable is this function? Does it exist on Mac and Windows?
Thanks, Misa
- Previous message: [Python-Dev] Re: _socket efficiency ideas
- Next message: [Python-Dev] More socket questions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]