question about python

F

fishfin

I was working through a tutorial about how to write a server using
python (the url is bellow). I am sure that the server is working to
some degree because when the server is running localhost:8080 just
keeps trying to load until it times out. I would like to know how to
send information through the server to my browser?

I was working through this tutorial:
http://python.about.com/od/networkingwithpython/ss/PythonWebServer.htm


and my final code is like this:

import socket

host = ''
port = 8080

c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

c.bind((host, port))

c.listen(1)

while 1:
csock, caddr = c.accept()
cfile = csock.makefile('rw', 0)

line = cfile.readline().strip()

cfile.write('HTTP/1.0 200 OK\n\n')
cfile.write('<html><head><title>Welcome %s!</title></head>' %
(str(caddr)))
cfile.write('<body><h1>Follow the link...</h1>')
cfile.write('All the server needs to do is ')
cfile.write('to deliver the text to the socket. ')
cfile.write('It delivers the HTML code for a link, ')
cfile.write('and the web browser converts it. <br><br><br><br>')
cfile.write('<font size="7"><center> <a href="http://python.about.com/
index.html">Click me!</a> </center></font>')
cfile.write('<br><br>The wording of your request was: "%s"' %(line))
cfile.write('</body></html>')

cfile.close()
csock.close()
 
D

Diez B. Roggisch

fishfin said:
I was working through a tutorial about how to write a server using
python (the url is bellow). I am sure that the server is working to
some degree because when the server is running localhost:8080 just
keeps trying to load until it times out. I would like to know how to
send information through the server to my browser?

I was working through this tutorial:
http://python.about.com/od/networkingwithpython/ss/PythonWebServer.htm


and my final code is like this:

import socket

host = ''
port = 8080

c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

c.bind((host, port))

c.listen(1)

while 1:
csock, caddr = c.accept()
cfile = csock.makefile('rw', 0)

line = cfile.readline().strip()

cfile.write('HTTP/1.0 200 OK\n\n')
cfile.write('<html><head><title>Welcome %s!</title></head>' %
(str(caddr)))
cfile.write('<body><h1>Follow the link...</h1>')
cfile.write('All the server needs to do is ')
cfile.write('to deliver the text to the socket. ')
cfile.write('It delivers the HTML code for a link, ')
cfile.write('and the web browser converts it. <br><br><br><br>')
cfile.write('<font size="7"><center> <a href="http://python.about.com/
index.html">Click me!</a> </center></font>')
cfile.write('<br><br>The wording of your request was: "%s"' %(line))
cfile.write('</body></html>')

cfile.close()
csock.close()

Do yourself a favor and look into the various python webframeworks such
as TurboGears, Django and what not.

Or at least into the module SimpleHTTPServer.

Diez
 
C

Carl Banks

I was working through a tutorial about how to write a server using
python (the url is bellow). I am sure that the server is working to
some degree because when the server is running localhost:8080 just
keeps trying to load until it times out. I would like to know how to
send information through the server to my browser?

I was working through this tutorial:http://python.about.com/od/networkingwithpython/ss/PythonWebServer.htm

and my final code is like this:

import socket

host = ''
port = 8080

c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

c.bind((host, port))

c.listen(1)

while 1:
csock, caddr = c.accept()
cfile = csock.makefile('rw', 0)

It looks like everything after this line needs to be indented.
Besides that, nothing jumps out at me, though I don't do direct socket
programming a lot.
line = cfile.readline().strip()

cfile.write('HTTP/1.0 200 OK\n\n')
cfile.write('<html><head><title>Welcome %s!</title></head>' %
(str(caddr)))
cfile.write('<body><h1>Follow the link...</h1>')
cfile.write('All the server needs to do is ')
cfile.write('to deliver the text to the socket. ')
cfile.write('It delivers the HTML code for a link, ')
cfile.write('and the web browser converts it. <br><br><br><br>')
cfile.write('<font size="7"><center> <a href="http://python.about.com/
index.html">Click me!</a> </center></font>')
cfile.write('<br><br>The wording of your request was: "%s"' %(line))
cfile.write('</body></html>')

cfile.close()
csock.close()


Carl Banks
 
F

fishfin

@ Carl: Yes, I think your right now that I look at it (or at least all
except for the last two lines need to be indented). I'm still not sure
how to send the stuff to the web browser though. Thanks for pointing
it out!

@ Diez: I'll start googling those right away.
 
C

Carl Banks

@ Carl: Yes, I think your right now that I look at it (or at least all
except for the last two lines need to be indented). I'm still not sure
how to send the stuff to the web browser though. Thanks for pointing
it out!

Try reading in the whole HTTP request instead of just the first line.
Change

line = cfile.readline().strip()

to

line = cfile.read()

And see if that helps. (Outputting the document so that it formats
the request well is left as an exercise. Also, as a heads up: in real
programs you should never output anything you receive through the
network without checking it or escaping it to prevent malicious uses.)


Carl Banks
 
F

fishfin

Try reading in the whole HTTP request instead of just the first line.
Change

line = cfile.readline().strip()

to

line = cfile.read()

And see if that helps.  (Outputting the document so that it formats
the request well is left as an exercise.  Also, as a heads up: in real
programs you should never output anything you receive through the
network without checking it or escaping it to prevent malicious uses.)

Carl Banks

I figured out what the problem was. When you had suggested that I
indent the lines at first I did all of them, but when I did that there
must have been an nonindented line before the last two lines which I
had indented, so ending the 'while 1:'. Because of that, that code
just flat out didn't work so I assumed that they must be not be
indented which is why it hasn't been working all along. Thanks for
your help! I don't think I would have every figured it out if you last
post hadn't gotten me to thinking about little tweeks like that.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,077
Latest member
SangMoor21

Latest Threads

Top