Python Sockets Help

bockman at virgilio.it bockman at virgilio.it
Tue Mar 11 04:03:12 EDT 2008


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