Home

On Aug 6, 1:27 pm, Carsten Haese <cars...@uniqsys.com> wrote:
> On Mon, 2007-08-06 at 09:03 -0700, 7stud wrote:
> > server:
> > ------------------
> > import socket
> > import sys
>
> > s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> > s.bind(("", 7777))
> > [...]
> > #Send messages back to client:
> > total_sent = 0
> > while total_sent < len(message):
> > print "debug: send while loop"
>
> > size_sent = s.sendto(message[total_sent:], ("localhost",
> > 7777) )
> > total_sent += size_sent
>
> > print "debug:", total_sent, len(message)
>
> I don't think that sending the datagram to port 7777 on localhost sends
> the message back to the client. I'm guessing the server is sending the
> message back to itself, which throws it into the infinite feedback loop
> you're experiencing.
>
> HTH,
>
> --
> Carsten Haesehttp://informixdb.sourceforge.net

Yes, you want to use the socket.recvfrom() method, store the address,
and send the response to that address. Your code is indeed repeatedly
sending itself the received message.

You want to change
> > data = s.recv(1024)
to
data, recv_addr = s.recvfrom(1024)

and
> > size_sent = s.sendto(message[total_sent:], ("localhost",
> > 7777) )
to
size_sent = s.sendto(message[total_sent:], recv_addr)

However, your client closes immediately after sending all its data, so
it will never receive that message.

previous
next

Re: interesting puzzle......try this you will be rewarded...
Re: rules from an xml file
Re: wxPython - drawing without paint event
Re: Automation and scheduling of FrontPage publishing using Python
Re: A question: Convert double to string
Mimo Wszystko
Niechciane i Zapomniane
Nasze Dzieci
Krwinka
Fundacja Sloneczko