Problem with socket
Justin Sheehy
justin at iago.org
Wed Feb 13 12:00:06 EST 2002
"DelPiccolo Ivano" <ivano.delpiccolo at degroof.be> writes:
> I tried to impement a very simple client-server application.
> Hre's the output from the server part :
>
> Traceback (most recent call last):
> File "C:\Python22\Pythonwin\pywin\framework\scriptutils.py", line 301, in
> RunScript
> exec codeObject in __main__.__dict__
> File "D:\server.py", line 10, in ?
> data = conn.recv(1024)
> File "<string>", line 1, in recv
> File "C:\Python22\lib\socket.py", line 159, in __getattr__
> raise error(9, 'Bad file descriptor')
> error: (9, 'Bad file descriptor')
>
>
> Here's my server.py :
> import socket
> host = ''
> port = 50007
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> s.bind ((host,port))
> s.listen(1)
> conn,addr=s.accept()
> print 'Connected by : ', addr
> while 1:
> data = conn.recv(10)
> if not data : break
> conn.send(data)
> conn.close()
The contents of the while loop is almost certainly not what you want.
The first recv will generally return some data. You then proceed to
send data back, and then _close the socket_. After that, the while
loop starts over and you try to read again... from the socket you just
closed.
If you just change the loop from:
while 1:
data = conn.recv(10)
if not data : break
conn.send(data)
conn.close()
to this:
while 1:
data = conn.recv(10)
if not data : break
conn.send(data)
conn.close()
you should be all set with regard to this example.
-Justin
More information about the Python-list
mailing list