problem with sockets code

James Mills prologic at
Fri Oct 3 06:25:40 CEST 2008

On Fri, Oct 3, 2008 at 2:13 AM, Daniel <daniel.watrous at> wrote:
> Hello,
> I can't seem to get my sockets code to work right.  Here is what I
> have inside my RequestHandler handle() function:
>        total_data=[]
>        data = True
>        logger_server.debug(self.__class__.__name__ + ' set data =
> True')
>        while data:
>            logger_server.debug(self.__class__.__name__ + ' receive
> first readline() of data')
>            data = self.rfile.readline().strip()
>            logger_server.debug(self.__class__.__name__ + ' first
> readline() of data = %s' % data)
>            total_data.append(data)
>        receivedCommand = '\n'.join(total_data)
> And this is what I have inside my client code
>    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>    sock.connect(('localhost',5001))
>    sock.sendall('Hello, world\r\n')
>    data = sock.recv(1024)
>    sock.close()
>    print 'Received', repr(data)
> There's a little more to it, but this is enough for me to ask my
> question.  The problem is that  I can't get the server loop (while
> data:) to stop without closing the connection, but I want to receive
> something back from the server before closing the sockets connection.
> My logs show that the server never leaves the loop.
> Thanks in advance.


You really should use an existing framework to help
you write your application here. You're using the
plain old (standard-library) sockets module.

I would suggest you use either Twisted, or pymills.

Twisted is more feature-rich, and a general purpose
event-driven framework. It can be a little overwhelming
to use.

pymills is my event-driven, component architecture
library that allows you to build event-driven systems
very easily with a component design.

You can download pymills from here:

Or you can get the latest developmen branch by using
Mercurial and cloning it:

hg clone

Here is a simple EchoServer that you could modify
to suit your application needs:

#!/usr/bin/env python

from pymills import event
from pymills.event import *
from import TCPServer

class Echo(TCPServer):

   def onREAD(self, sock, data):
      self.write(sock, data)

def main():
   echo = Echo(8000)
   event.manager += echo

   while True:
      except KeyboardInterrupt:

if __name__ == "__main__":


-- "Problems are solved by method"

More information about the Python-list mailing list