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