468,284 Members | 1,461 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,284 developers. It's quick & easy.

SocketServer class - basis problem

So I'm new to this python stuff - and this has me stumped

# server
import SocketServer

PORT = 8037

class myRequestHandler(SocketServer.StreamRequestHandler ):
def handle(self):
self.input = self.rfile.read(1024)
print self.input
self.wfile.write("blah")

server = SocketServer.TCPServer(("", PORT), myRequestHandler)
print "listening on port", PORT
server.serve_forever()

# client
import socket

HOST = socket.gethostname()
PORT = 8037

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello, world')

# Fails
data = s.recv(1024)

s.close()
print 'Received', data

Why does s.recv() hang the client? It seems like server is not
handing back "blah", but I'm sure it is.....this should be
easy...(sigh)
Jul 18 '05 #1
4 6383
Hello, Leonard,
data = s.recv(1024)
s.close()
print 'Received', data

Why does s.recv() hang the client? It seems like server is not
handing back "blah", but I'm sure it is..... I think that the socket buffer is not full (since you are waiting for
1024 and "blah" is not enough).
this should be easy...(sigh)

If it was that easy it won't be interesting ;-)

Have a look at http://www.amk.ca/python/howto/sockets/

HTH.
Miki
Jul 18 '05 #2
"Miki Tebeka" <te****@cs.bgu.ac.il> wrote in message
news:33**************************@posting.google.c om...

Have a look at http://www.amk.ca/python/howto/sockets/

HTH.
Miki


And then check out
http://aspn.activestate.com/ASPN/Coo.../Recipe/200946
Jul 18 '05 #3
"lebo" <le***********@yahoo.com> wrote in message
news:63**************************@posting.google.c om...
So I'm new to this python stuff - and this has me stumped
[sample code]
Why does s.recv() hang the client? It seems like server is not
handing back "blah", but I'm sure it is.....this should be
easy...(sigh)


<gratuitous self-advertisement>
If you're going to OSCON you might like to sign up for the Python Network
Programming tutorial - see
http://conferences.oreillynet.com/cs...ew/e_sess/4165

This tutorial is intended to help network programming beginners to write
their own networking code.
</gratuitous self-advertisement>

regards
--
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/pwp/

Jul 18 '05 #4
Miki Tebeka wrote:

Hello, Leonard,
data = s.recv(1024)
s.close()
print 'Received', data

Why does s.recv() hang the client? It seems like server is not
handing back "blah", but I'm sure it is.....
I think that the socket buffer is not full (since you are waiting for
1024 and "blah" is not enough).


This is not how the size parameter to recv() is used. It is a
*maximum*, meaning any amount of data from zero bytes (if the
socket is closed) to that value will be returned, with *no*
guarantees how much is actually returned. Often, but absolutely
not always, you will get a whole "line" and newbies will be
deceived into thinking it's enough just to recv(1024) and
carry on, but eventually such code will fail.

-Peter
Jul 18 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by Olivier Hoarau | last post: by
3 posts views Thread by Ergin Aytac | last post: by
reply views Thread by Adil Hasan | last post: by
5 posts views Thread by missiplicity | last post: by
12 posts views Thread by Paul Rubin | last post: by
reply views Thread by Tomi Hautakoski | last post: by
5 posts views Thread by eliben | last post: by
2 posts views Thread by MrBee | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.