【发布时间】:2021-01-17 14:06:42
【问题描述】:
我正在尝试通过 MichiganX 在 edX 上提供的课程来学习 Django。我的问题是课程跳过了一些细节,没有它们我无法让代码工作。
代码如下:
from socket import *
def createServer():
serversocket = socket(AF_INET, SOCK_STREAM)
try:
serversocket.bind(('localhost', 9000))
serversocket.listen(5)
while 1:
(clientsocket, address) = serversocket.accept()
rd = clientsocket.recv(5000).decode()
pieces = rd.split('\n')
if len(pieces) > 0:
print(pieces[0])
data = "HTTP/1.1 200 OK\r\n"
data += "Content-Type: text/html; charset=UTF-8\r\n"
data += "\r\n"
data += "<html><body>Hello World</body></html>\r\n\r\n"
clientsocket.sendall(data.encode())
clientsocket.shutdown(SHUT_WR)
except KeyboardInterrupt:
print("\nShutting down...\n");
except Exception as exc:
print("Error:\n");
print(exc)
serversocket.close()
print('Access http://localhost:9000')
createServer()
我们还被告知要构建一个简单的网络浏览器,它将我们连接到我们构建的服务器,它应该返回“Hello World!”,它的代码如下所示:
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('127.0.0.1', 9000))
cmd = 'GET http://127.0.0.1/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if len(data) < 1:
break
print(data.decode(), end = '')
mysock.close()
第一个问题是课程中没有提到 romeo.txt,它只是突然冒出来的。他们告诉我们只运行代码,但它什么也没做。我用谷歌搜索了如何启动服务器,所以在我的命令窗口中,我从服务器文件所在的目录启动了它,但是每当我尝试从代码中连接上面的网络浏览器(即使我删除“romeo.txt”)时,我都会收到错误 404。
我知道我遗漏了一些东西,我知道仅从我的文件所在的目录启动服务器是不够的,课程没有解释如何做,但为了在下一课中取得进展,我需要做它。谁能帮我?对不起,如果这个问题很愚蠢,但我已经被困了两个小时,我不知道我还能做什么。
【问题讨论】:
标签: python http web-applications