http server header
Übersicht

![]() |
PummelieBetreff: http server header |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich wollt gerade auf die schnelle einen Fileserver fürs lokale netz schreiben, aber ich bekomm das mit dem http header nicht ganz hin. ich habe schon etliche seiten durchgeschaut, aber es taucht immer das Problem auf, das der Client, z.b. Internet Explorer die daten der Datei nicht nimmt, bessergesagt sie ignoriert, und auf weitere daten wartet. Der Code (ausschnitt): Code: [AUSKLAPPEN] Verz = ReadDir(root$) page = WriteFile("page.html") WriteLine page,"<html>" WriteLine page,"<head>" WriteLine page,"<title>Index von: " + root$ + "</title>" WriteLine page,"</head>" WriteLine page,"<body bgcolor=" + Chr(34) + "#808080" + Chr(34) + ">" WriteLine page,"<center>" Repeat Datei$ = NextFile$(Verz) If Datei$ = "" Then Exit If FileType("C:\" + Datei$) = 2 Then WriteLine page,"<a href="+Chr(34)+root$+Datei$+Chr(34)+">Ordner: "+Datei$+"</a><br>" Else WriteLine page,"<a href="+Chr(34)+root$+Datei$+Chr(34)+">Datei: "+Datei$+"</a><br>" End If Forever CloseDir Verz WriteLine page,"</center>" WriteLine page,"</body>" WriteLine page,"</html>" CloseFile page WriteLine pers(i),"HTTP/1.1 200 OK" Repeat dd = ReadLine$(pers(i)) Until dd = 0 Or dd = "" WriteLine pers(i),"Server: Apache/1.3.29 (Unix) PHP/4.3.4" WriteLine pers(i),"Content-Length: " + FileSize("page.html") WriteLine pers(i),"Content-Language: de" WriteLine pers(i),"Content-Type: Text/html" WriteLine pers(i),"Connection: close" WriteLine pers(i),"" page = OpenFile("page.html") Repeat ReadBytes(Bank(i),page,0,102400) WriteBytes(Bank(i),pers(i),0,102400) Select Eof(page) Case 1 Exit End Select Forever CloseFile(page) pers(i) = 0 Das erstellen der Datei page functioniert. Das ganze läuft in einer for next schleife ab desswegen ständig das i. |
||
It's done when it's done. |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du schon versucht den Stream zu schließen? | ||
Starfare: Worklog, Website (download) |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja dann kommt seite kann nicht angezeigt werden.
Eigentlich sollte der browser die verbindung schließen (so steht es jedenfalls im header). |
||
It's done when it's done. |
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Wenn du im Header text/html angibst solltest du mal versuchen die Daten wirklich auch als Text zu versenden: WriteLine MFG |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
thx, jetzt sagt der client schon mal, das etwas angekommen ist (fortschritsbalken fast bis ende).
Doch komplett fertig ist er noch nicht, und da die seite ja kein favicon hat, wartet der client sicher auf was anderes aber was? |
||
It's done when it's done. |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
lass dir doch mal den stream als debug ausgeben(das was browser->programm sendet) | ||
Warbseite |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun ja, das sind alles nur unterstützt dinge usw. nichts nützliches. | ||
It's done when it's done. |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du (der server) Connection: close sendest, musst du in BB den TCP-Stream auch schliessen, um dem Clienten mitzuteilen, dass die übertragung zuende ist.
Alternativ besteht noch die möglichkeit, dass der Browser noch weitere Daten anfrägt und wartet, dass diese gesendet werden - aber diese Anfragen würden dann natürlich wieder mit HTTP Header und co im Log des Servers erscheinen (wenn du sowas überhaupt logst... wäre aber von Vorteil) mfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also,
ich schließe die Verbindung nach übertragen, und ich log alles. Hier mal der ganze (kleine) Programm Code: Code: [AUSKLAPPEN] AppTitle "File Server" Local i,stream,pos,ip$,fullvile,timer = CreateTimer(40),zeichen,root$ = "C:\",stream2,page,eintr,a,Verz,Datei$,rr$,dd,b Global host = CreateTCPServer(80),hosts = CreateTCPServer(443),win,can Dim Menu(6) If host = 0 Then Notify("Fehler beim erstellen des Server´s!" + Chr(13) + "Schalten sie Port 80 frei.",1):End If hosts = 0 Then Notify("Fehler beim erstellen des aAdmin Server!" + Chr(13) + "Schalten sie Port 81 frei.",1):End loadgui() Dim pers(4) Dim ord$(4) Dim Bank(4) Dim sant$(4) Dim roote$(2000,1) For i=0 To 4 Bank(i) = CreateBank(102400) Next Repeat stream = AcceptTCPStream(host) stream2 = AcceptTCPStream(hosts) Select stream2 Case 0 Default pos = pos + 12 Text 0,pos,"Verbindung auf https - Verweigert ("+CurrentTime$()+")" CloseTCPStream stream2 FlipCanvas can stream2 = 0 End Select Select stream Case 0 Default ip$ = DottedIP$(stream) pos = pos + 12 Text 0,pos,ip$ + " stellt eine Verbindung her (" + CurrentTime$() + ")" FlipCanvas can For i=0 To 4 Select pers(0) Case 0 pers(i) = stream stream = 0 pos = pos + 12 Text 0,pos,ip$ + " wurde dem Index " + i + " zugeteilt (" + CurrentTime$() + ")" FlipCanvas can End Select Next If stream <> 0 Then pos = pos + 12 Text 0,pos,"Maximale streams erreicht, errorpatch wird angezeigt (" + CurrentTime$() + ")" FlipCanvas can WriteLine(stream,"HTTP/1.0 503 SERVICE UNAVAILABLE") stream = 0 EndIf End Select For i=0 To 4 Select pers(i) Case 0 Default sant$(i) = ReadLine$(pers(i)) Select sant$(i) Case 0 Default zeichen = Len(sant$(i)) zeichen = zeichen - 9 sant$(i) = Left$(sant$(i),zeichen) zeichen = Len(sant$(i)) zeichen = zeichen - 4 sant$(i) = Right$(sant$(i),zeichen) If Left$(sant$(i),2) = "pt" Or Left$(sant$(i),1) = "-" Or Left$(sant$(i),1) = ":" Then Goto notext pos = pos + 12 Text 0,pos,"Client in index " + i + " sendet: get " + sant$(i) FlipCanvas can .notext For b = 0 To eintr Select sant$(i) Case "" Verz = ReadDir(root$) page = WriteFile("page.html") WriteLine page,"<html>" WriteLine page,"<head>" WriteLine page,"<title>Index von: " + root$ + "</title>" WriteLine page,"</head>" WriteLine page,"<body bgcolor=" + Chr(34) + "#808080" + Chr(34) + ">" WriteLine page,"<center>" eintr = 0 Repeat a = a +1 Datei$ = NextFile$(Verz) If Datei$ = "" Then Exit If FileType("C:\" + Datei$) = 2 Then WriteLine page,"<a href="+Chr(34)+root$+Datei$+Chr(34)+">Ordner: "+Datei$+"</a><br>" roote$(a,0) = Datei$ Else WriteLine page,"<a href="+Chr(34)+root$+Datei$+Chr(34)+">Datei: "+Datei$+"</a><br>" roote$(a,1) = Datei$ End If Forever eintr = a a = 0 CloseDir Verz WriteLine page,"</center>" WriteLine page,"</body>" WriteLine page,"</html>" CloseFile page WriteLine pers(i),"HTTP/1.0 200 OK" Repeat dd = ReadLine$(pers(i)) Until dd = 0 Or dd = "" WriteLine pers(i),"Server: Apache/1.3.29 PHP/4.3.4" WriteLine pers(i),"Content-Length: " + FileSize("page.html") WriteLine pers(i),"Content-Language: de" WriteLine pers(i),"Content-Type: text/html" WriteLine pers(i),"Connection: close" WriteLine pers(i),"" page = OpenFile("page.html") pos = pos + 12 Text 0,pos,"Page Datei erstellt, beginne Transpher" FlipCanvas can Repeat rr$ = ReadLine$(page) WriteLine pers(i),rr$ Select Eof(page) Case 1 pos = pos + 12 Text 0,pos,"Datei gesendet" FlipCanvas can Exit End Select Forever CloseFile(page) CloseTCPStream pers(i) pers(i) = 0 Case roote$(b,0) ord$(i) = root$ + sant$(i) Verz = ReadDir(ord$(i)) page = WriteFile("page.html") WriteLine page,"<html>" WriteLine page,"<head>" WriteLine page,"<title>Index von: " + root$ + "</title>" WriteLine page,"</head>" WriteLine page,"<body bgcolor=" + Chr(34) + "#808080" + Chr(34) + ">" WriteLine page,"<center>" eintr = 0 Repeat a = a +1 Datei$ = NextFile$(Verz) If Datei$ = "" Then Exit If FileType(ord$(i) + Datei$) = 2 Then WriteLine page,"<a href="+Chr(34)+root$+Datei$+Chr(34)+">Ordner: "+Datei$+"</a><br>" Else WriteLine page,"<a href="+Chr(34)+root$+Datei$+Chr(34)+">Datei: "+Datei$+"</a><br>" End If Forever a = 0 CloseDir Verz WriteLine page,"</center>" WriteLine page,"</body>" WriteLine page,"</html>" CloseFile page WriteLine pers(i),"HTTP/1.0 200 OK" Repeat dd = ReadLine$(pers(i)) Until dd = 0 Or dd = "" WriteLine pers(i),"Server: Apache/1.3.29 PHP/4.3.4" WriteLine pers(i),"Content-Length: " + FileSize("page.html") WriteLine pers(i),"Content-Language: de" WriteLine pers(i),"Content-Type: text/html" WriteLine pers(i),"Connection: close" WriteLine pers(i),"" page = OpenFile("page.html") pos = pos + 12 Text 0,pos,"Page Datei erstellt, beginne Transpher" FlipCanvas can Repeat rr$ = ReadLine$(page) WriteLine pers(i),rr$ Select Eof(page) Case 1 pos = pos + 12 Text 0,pos,"Datei gesendet" FlipCanvas can Exit End Select Forever CloseFile(page) CloseTCPStream pers(i) pers(i) = 0 End Select Next sant$(i) = 0 End Select End Select Next Select WaitEvent(10) Case $803 End End Select Forever Function loadgui() Local x = apiGetSystemMetrics(0)/2-250:Local y = apiGetSystemMetrics(1)/2-200 win = CreateWindow("File Server",x,y,500,400,0,5) can = CreateCanvas(0,0,500,350,win) SetBuffer CanvasBuffer(can) ClsColor(255,255,255) Color(0,0,0) Cls Text(0,0,"Server gestartet - Port 80 (" + CurrentTime$() + ")") FlipCanvas can Menu(1) = CreateMenu("Datei", 1, WindowMenu(win)) Menu(2) = CreateMenu("Einstellungen", 2, WindowMenu(win)) Menu(3) = CreateMenu("Stop Server", 3, Menu(1)) Menu(4) = CreateMenu("Beenden", 4, Menu(1)) Menu(5) = CreateMenu("Port", 5, Menu(2)) Menu(6) = CreateMenu("Root", 6, Menu(2)) UpdateWindowMenu win End Function |
||
It's done when it's done. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group