我正在尝试学习一些HTTP / CGI知识,并且想在浏览器中查看HTML时在网页上打印HTML,但是不确定使用套接字库时正确的语法是什么:
#!/usr/bin/env python
import random
import socket
import time
s = socket.socket() # Create a socket object
host = socket.getfqdn() # Get local machine name
port = 9082
s.bind((host, port)) # Bind to the port
print 'Starting server on', host, port
print 'The Web server URL for this would be http://%s:%d/' % (host, port)
s.listen(5) # Now wait for client connection.
print 'Entering infinite loop; hit CTRL-C to exit'
while True:
# Establish connection with client.
c, (client_host, client_port) = s.accept()
print 'Got connection from', client_host, client_port
c.send('Server Online\n')
c.send('HTTP/1.0 200 OK\n')
c.send('Content-Type: text/html\n')
c.send(' """\
<html>
<body>
<h1>Hello World</h1> this is my server!
</body>
</html>
""" ')
c.close()
前三行c.send行有效,然后在我放入HTML的最后一行中存在语法问题。
使用三引号字符串:
c.send("""
<html>
<body>
<h1>Hello World</h1> this is my server!
</body>
</html>
""") # Use triple-quote string.
除了语法错误外,代码中还有多个问题。以下是修改后的版本(仅while循环,请参阅注释以查看进行了哪些修改)
while True:
# Establish connection with client.
c, (client_host, client_port) = s.accept()
print 'Got connection from', client_host, client_port
#c.send('Server Online\n') # This is invalid HTTP header
c.recv(1000) # should receive request from client. (GET ....)
c.send('HTTP/1.0 200 OK\n')
c.send('Content-Type: text/html\n')
c.send('\n') # header and body should be separated by additional newline
c.send("""
<html>
<body>
<h1>Hello World</h1> this is my server!
</body>
</html>
""") # Use triple-quote string.
c.close()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句