On 12 KvÄ›, 17:54, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote: > On Mon, 12 May 2008 08:34:07 -0700 (PDT), [EMAIL PROTECTED] wrote: > >Hello, > >I am beginner but so I need help. I have small script for receive data > >from port 3883, but it print only once. > > >import socket > > >HOST = 'localhost' > >PORT = 3883 > >s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > >s.connect((HOST, PORT)) > >data = s.recv(2048) > >s.close() > >print 'receive data from server:', `data` > > >So I try to write cycle to this script, like this: > > >import socket > > >HOST = 'localhost' > >PORT = 3883 > >s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > >while 1: > > s.connect((HOST, PORT)) > > data = s.recv(2048) > > s.close() > > print 'receive data from server:', `data` > > >But Python reporting: > > >Traceback (most recent call last): > > File "C:\Documents and Settings\poupa\Plocha\TCP3.py", line 7, in > ><module> > > s.connect((HOST, PORT)) > > File "<string>", line 1, in connect > > File "C:\Python25\lib\socket.py", line 141, in _dummy > > raise error(EBADF, 'Bad file descriptor') > >error: (9, 'Bad file descriptor') > > >Where is the mistake? I dont know. > > You cannot reconnect a socket. You need to create a new one for each > connection. It's also almost certainly the case that the way you are > receiving data is incorrect. There is no guarantee that you will get > 2048 bytes from socket.recv(2048). It isn't even guaranteed that all > the bytes written to the socket by the peer will be returned by such > a call. Instead, you need a framing protocol to determine when all > data has been received. For example, you might length prefix the > data, or you might insert a delimiter (or a terminator) at the end. Or > if there is exactly one message to receive, then you should just read > until the recv call returns '', indicating EOF. > > Jean-Paul
ok thanks, but I am true greenhorn, so you think that the best way is write new script? Could you send me code if it isnt long, becase I have no idea and unfortunately time as well. Petr Petr -- http://mail.python.org/mailman/listinfo/python-list