By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,665 Members | 1,251 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,665 IT Pros & Developers. It's quick & easy.

SocketServer class - basis problem

P: n/a
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
Share this Question
Share on Google+
4 Replies


P: n/a
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

P: n/a
"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

P: n/a
"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

P: n/a
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.