Python Sockets Help

Mark M Manning mark.manning at gmail.com
Tue Mar 11 14:07:50 CET 2008


That's embarrassingly simple!  Thank you very much!!



On Mar 11, 4:03 am, bock... at virgilio.it wrote:
> On 10 Mar, 23:58, Mark M Manning <mark.mann... at gmail.com> wrote:
>
>
>
> > I need your expertise with a sockets question.
>
> > Let me preface this by saying I don't have much experience with
> > sockets in general so this question may be simple.
>
> > I am playing with the mini dns server from a script I found online:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/491264/index_txt
>
> > All I want to do is edit this script so that it records the IP
> > address.  I've seen other examples use the accept() object which
> > returns the data and the IP address it is receiving the data from.  I
> > can't use that in this case but I'm wondering if someone could show me
> > how.
>
> > Here is the socket part of the script:
>
> > if __name__ == '__main__':
> >   ip='192.168.1.1'
> >   print 'pyminifakeDNS:: dom.query. 60 IN A %s' % ip
>
> >   udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> >   udps.bind(('',53))
>
> >   try:
> >     while 1:
> >       data, addr = udps.recvfrom(1024)
> >       p=DNSQuery(data)
> >       udps.sendto(p.respuesta(ip), addr)
> >       print 'Respuesta: %s -> %s' % (p.dominio, ip)
> >   except KeyboardInterrupt:
> >     print 'Finalizando'
> >     udps.close()
>
> > Thanks to everyone in advance!
> > ~Mark
>
> You already have the address of the sender, is in the 'addr' variable,
> as returned by udps.recvfrom.
> Change the print statement in sometinmh like:
>       print 'Respuesta (%s): %s -> %s' % ( addr, p.dominio, ip)
> and you will see the sender address in dotted notation printed inside
> the ().
>
> Ciao
> -------
> FB




More information about the Python-list mailing list