Python Sockets Help

M

Mark M Manning

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
 
B

bockman

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,062
Latest member
OrderKetozenseACV

Latest Threads

Top