-1
私はPythonを使ってネットワークプログラミングを学び始めました。私は自分のサーバーにいくつか問題があります。pythonソケットサーバーhttpプロトコルで空のファイルを転送
いくつかの画像、js、cssでシンプルなサーバーを表現できるシンプルなものを構築しようとしていますが、私はファイル転送コードの問題点を把握できません。時間を私はあきらめた。 私はブラウザをチェックしています.HTMLをかなりうまく送信していますが、ページの上部にJSコードがあります。画像をリクエストするときに、ブラウザは "name_I_choose.jpg"ファイルをダウンロードしましたが、0kbファイルでした。ここで
は私のコードです:私はあなたが提案します、すべてを感謝しますので
import socket
import os
print "server on"
server_socket = socket.socket()
server_socket.bind(("127.0.0.1", 80))
server_socket.listen(10)
while True:
(client_socket, client_address) = server_socket.accept()
try:
data = client_socket.recv(1024)
# print data
except socket.error:
print "no more requests, bye"
break
if not data:
break
lines = data.split("\r\n")
print lines[0]
parts = lines[0].split(" ")
print "1: " + parts[0] + " 2: " + parts[1] + " 3: " + parts[2]
if parts[0] == "GET" and parts[2] == "HTTP/1.1":
print "good"
if parts[1] == "\\" or parts[1] == "/":
path = "path/to/root/index.html"
else:
path = "path/to/root" + parts[1].replace("\\", "/")
if os.path.isfile(path):
f = file(path, 'rb')
size = b = os.path.getsize(path)
print size
types = {"txt": "text/html; charset=utf-8", "html": "text/html; charset=utf-8", "jpg": "image/jpeg",
"js": "text/javascript; charset=utf-8", "css": "text/css"}
f_type = types.get(path.split(".")[1])
data = f.read(size)
print "sending data"
client_socket.send("HTTP/1.0 200 " + str(size) + "\r\n" + "Content-Type: " + f_type)
client_socket.send(data)
else:
print "file not found"
print path
client_socket.send("HTTP/1.0 404 -1\r\n")
else:
print "not GET HTML FORM"
break
print "done"
client_socket.close()
server_socket.close()
は、多くの問題は、おそらくあります。ありがとう:)
このコードを実行すると出力を含めることはできますか?助けてください。 –
あなたはもっと具体的になりますか?どのような出力? –
申し訳ありません - 私はこのプログラムの出力を意味します。あなたはこのプログラムをサーバーとして実行し、それからファイルをフェッチしようとしますか?あなたは実行中のサーバーからどのような出力を見ることができますか?私はあなたのコードのprintステートメントを参照してください - あなたは私たちにその出力を表示できますか?この実行中のサーバーからデータをどのように取得していますか? –