Sending HTML through Python Socket Server
20,629
Use triple-quote string:
c.send("""
<html>
<body>
<h1>Hello World</h1> this is my server!
</body>
</html>
""") # Use triple-quote string.
Beside the syntax error, there's multiple issues in the code. Following is a modified version (while loop only, see comments to see what modification made)
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()
Author by
Goose
CEO at Quantum Labs (www.quantumlabs.us) Contact me at on Twitter - https://twitter.com/usgoose or email at Quantum Labs.
Updated on September 20, 2020Comments
-
Goose over 3 years
I am trying to learn some HTTP/CGI stuff and I want to print HTML on the webpage when you view it in your browser but am not sure what the correct syntax is when using the socket library:
#!/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()
The first three c.send lines work and then there is a syntax issue with the last line where I put in HTML.