2017-12-13 3 views
1

Socketモジュールを使用してPython Webサーバーを作成しようとしています。私はこのビデオhttps://www.youtube.com/watch?v=_najJkyK46gに従っています。PythonでWebサーバーを作成できません

これは私のコードです:

import socket 

host = '' 
port = 8000 

listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
listen_socket.bind((host, port)) 
listen_socket.listen(1) 

print("Listening on port "+str(port)) 

while True: 
    client_connection, client_address = listen_socket.accept() 
    request = client_connection.recv(1024) 
    print(request) 

    http_response = "Hello World." 

    client_connection.sendall(bytes(http_response.encode('utf-8'))) 
    client_connection.close() 

私はChromeとそれが動作しません127.0.0.1:8000と入力します。 「このページは機能していません」というエラーが表示されます。 127.0.0.1が無効な応答を送信しました。 ERR_INVALID_HTTP_RESPONSE。私を助けてください?

答えて

0

クロムHello World.が準拠していない構造化されたプロトコルであるHTTPレスポンスを期待している:

https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Response_message

応答メッセージは、以下からなる:

ステータス行ステータスコードと理由メッセージ(例えば、 HTTP/1.1 200 OK、クライアントの要求が成功したことを示します)を含みます。 応答ヘッダーフィールド(Content-Type:text/htmlなど)。空の行。 オプションのメッセージ本文。ステータス行とその他のヘッダーフィールドは、すべて で終わる必要があります。空行は、 のみで構成され、他の空白はありません。[31]この厳密な要求は、 が、他の システムの改行を一貫して使用するために、メッセージ本文内でやや緩和されています。[33]

次の応答が動作するはずの更新:あなたはHTTPを介して通信するためにサーバーを作ることにするつもりなら

HTTP/1.1 200 OK 
Date: Mon, 23 May 2005 22:38:34 GMT 
Content-Type: text/html; charset=UTF-8 
Content-Encoding: UTF-8 
Content-Length: 138 
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT 
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) 
ETag: "3f80f-1b6-3e1cb03b" 
Accept-Ranges: bytes 
Connection: close 

<html> 
<head> 
    <title>An Example Page</title> 
</head> 
<body> 
    Hello World, this is a very simple HTML document. 
</body> 
</html> 

私はdefの多くがあり、そのうちのPythonのウェブのHTTPフレームワークをお勧めします。されている2つの非常に軽量なもの:

+0

は、だから私は混乱しています。そのHTMLをpythonスクリプトに追加したいですか?それは不可能ですよね? 1つの言語でこれを行うことができますか? –

関連する問題