ich hab mich mal an einem kleinen webserver mittels sockets probiert aber was auch immer ich versuche, es funktioniert nur lokal. sobald der server von einem anderen rechner aus aufgerufen wird kommt, daß die angeforderte datei keinen content enthalten würde, obwohl ich nicht existierende files mit 404 "abgefangen" habe.
hier der code:
Code: Alles auswählen
import sys,urllib
import socket
from string import *
# Socket oeffnen
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
debugmsg="Hallo?"
http_res="HTTP/1.1 200 OK\nDate: Wed, 05 Dec 2001 23:22:22 GMT\nServer: Apache/1.3.19 (Unix) mod_auth_pam/1.0a PHP/4.0.4pl1 mod_ssl/2.8.2
OpenSSL/0.9.6\nLast-Modified: Tue, 27 Nov 2001 09:58:06 GMT\nConnection: close\nContent-Type: text/html"
page404="<html><body><b>404 - File nicht vorhanden</b></body</html>"
fehler="none"
def recvline (conn) :
data = ''
while 1 :
d = conn.recv(1)
if d == '\n' :
break
if d != '\r' :
data = data + d
return data
if len(sys.argv) > 2:
print "Usage: my.py"
else:
s.bind(('',80))
s.listen(80)
while 1:
# auf naechste Verbindung warten
sock,addr = s.accept()
print "connect from", addr
fehler="none"
outpage="";
# Daten vom Client lesen
l = recvline(sock)
if l != "QUIT":
file_req_ar1=split(l,"/")
file_req_ar2=split(file_req_ar1[1])
file_req=file_req_ar2[0]
print "file-requested: ", file_req
else:
print "client-Request: ", l
if l != "QUIT":
# sock.send(http_res)
# sock.send("\r\n")
# sock.send("\r\n")
try:
req=open("./htdocs/"+file_req)
lines=req.readlines()
for z in lines:
outpage=outpage + z
req.close
sock.send(outpage)
except:
fehler="404"
if fehler=="404":
sock.send(page404)
# Verbindung zum Client schliessen
sock.close()
# falls "QUIT" while-Schleife abbrechen
if l == 'QUIT' :
break
# Server-Socket schliessen
s.close()