<div dir="ltr">Hi Guido :<div><br></div><div style>Thanks a lot. That helped.</div><div style><br></div><div style>I will try StackOverflow next time.</div><div style><br></div><div style>cheers,</div><div style>ani</div><div style>

<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jun 21, 2013 at 8:07 AM, Guido van Rossum <span dir="ltr"><<a href="mailto:guido@python.org" target="_blank">guido@python.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Technically this list isn't the right place, but you probably are<br>
bitten by the duplication of functionality in Lib/socket.py. There's a<br>
list of methods at the top of that file, _socketmethods.<br>
<br>
But you really shouldn't be asking here -- this list is for changes to<br>
Python, not using or hacking it. (Try StackOverflow for that.)<br>
<br>
--Guido<br>
<div><div class="h5"><br>
On Thu, Jun 20, 2013 at 10:18 PM, Ani Sinha <<a href="mailto:ani@aristanetworks.com">ani@aristanetworks.com</a>> wrote:<br>
> Hi python devs :<br>
><br>
> As a part of exploring an idea, I am trying to add a new method to the<br>
> python socket object. Here's what I have been trying to do (the patch may be<br>
> whitespace damaged so please bear with me) :<br>
><br>
><br>
> Index: Python-2.7/Modules/socketmodule.c<br>
> ===================================================================<br>
> --- Python-2.7.orig/Modules/socketmodule.c<br>
> +++ Python-2.7/Modules/socketmodule.c<br>
> @@ -126,6 +126,7 @@ makefile([mode, [bufsize]]) -- return a<br>
>  recv(buflen[, flags]) -- receive data\n\<br>
>  recv_into(buffer[, nbytes[, flags]]) -- receive data (into a buffer)\n\<br>
>  recvfrom(buflen[, flags]) -- receive data and sender\'s address\n\<br>
> +arecvfrom(buflen[, flags]) -- same as recvfrom \n\<br>
>  recvfrom_into(buffer[, nbytes, [, flags])\n\<br>
>    -- receive data and sender\'s address (into a buffer)\n\<br>
>  sendall(data[, flags]) -- send all data\n\<br>
> @@ -468,6 +469,13 @@ static PyTypeObject sock_type;<br>
>  #define IS_SELECTABLE(s) ((s)->sock_fd < FD_SETSIZE || s->sock_timeout <=<br>
> 0.0)<br>
>  #endif<br>
><br>
> @@ -2620,6 +2802,58 @@ PyDoc_STRVAR(recvfrom_doc,<br>
>  \n\<br>
>  Like recv(buffersize, flags) but also return the sender's address info.");<br>
><br>
> +static PyObject *<br>
> +sock_arecvfrom(PySocketSockObject *s, PyObject *args)<br>
> +{<br>
> +    return sock_recvfrom(s,args);<br>
> +}<br>
> +<br>
> +PyDoc_STRVAR(arecvfrom_doc,<br>
> +"arecvfrom(buffersize[, flags]) -> (data, address info)\n\<br>
> +\n\<br>
> + experimental stuff");<br>
><br>
>  /* s.recvfrom_into(buffer[, nbytes [,flags]]) method */<br>
><br>
> @@ -2963,6 +3197,8 @@ static PyMethodDef sock_methods[] = {<br>
>                        recv_into_doc},<br>
>      {"recvfrom",          (PyCFunction)sock_recvfrom, METH_VARARGS,<br>
>                        recvfrom_doc},<br>
> +    {"arecvfrom",          (PyCFunction)sock_arecvfrom, METH_VARARGS,<br>
> +                      arecvfrom_doc},<br>
>      {"recvfrom_into",  (PyCFunction)sock_recvfrom_into, METH_VARARGS |<br>
> METH_KEYWORDS,<br>
>                        recvfrom_into_doc},<br>
>      {"send",              (PyCFunction)sock_send, METH_VARARGS,<br>
><br>
><br>
> When I compile this and run a simple script like the following that uses<br>
> arecvfrom() :<br>
><br>
> sock = socket.socket( socket.PF_PACKET, socket.SOCK_RAW )<br>
> sock.bind( ( intf, ETH_P_ALL ) )<br>
><br>
> (pkt,dontcare) = dst.arecvfrom( 500, socket.MSG_DONTWAIT )<br>
><br>
> I get this exception :<br>
><br>
> AttributeError: '_socketobject' object has no attribute 'arecvfrom'<br>
><br>
> So what am I doing wrong? How do I export this new socket method?<br>
><br>
> any help/pointer will be greatly appreciated.<br>
><br>
> cheers,<br>
> ani<br>
><br>
> --<br>
> Ani<br>
><br>
</div></div>> _______________________________________________<br>
> Python-Dev mailing list<br>
> <a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
> <a href="http://mail.python.org/mailman/listinfo/python-dev" target="_blank">http://mail.python.org/mailman/listinfo/python-dev</a><br>
> Unsubscribe:<br>
> <a href="http://mail.python.org/mailman/options/python-dev/guido%40python.org" target="_blank">http://mail.python.org/mailman/options/python-dev/guido%40python.org</a><br>
><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>Ani
</div>