私はソケットライブラリを使用してPython Webサーバーを作成しようとしています。私はいくつかの情報源を見てきましたが、私が書いたコードがなぜ機能しないのか理解できません。他の人は非常に似たようなコードを実行し、それが機能すると主張する私はPythonには新しいので、私は単純なものが欠けているかもしれません。シンプルなPython Webサーバーの問題
これでうまくいく唯一の方法は、データ変数をクライアントに送り返すことです。ブラウザは元のGETリクエストを出力します。 HTTP応答を送信しようとすると、接続がタイムアウトします。
import socket
##Creates several variables, including the host name, the port to use
##the size of a transmission, and how many requests can be handled at once
host = ''
port = 8080
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(16)
if data:
client.send('HTTP/1.0 200 OK\r\n')
client.send("Content-Type: text/html\r\n\r\n")
client.send('<html><body><h1>Hello World</body></html>')
client.close()
s.close()
あなたがそれを実行しようとすると正確に何が起こるのですか?[ソケットやHTTPの学習のためにこれを行うのとは別に、悪い考えです] –
これを実行すると、シェルがポップアップし、 localhost:8080をブラウザに入力します。私がすると、シェルは閉じます。しばらくすると、ブラウザは接続がタイムアウトしたことを知らせます。前述のように、クライアントにデータ変数のみを送信すると、WebブラウザはGET要求を表示します。 – egoskeptical