Bild via TCP am Browser...?
Übersicht

![]() |
Mathias-KwiatkowskiBetreff: Bild via TCP am Browser...? |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie der tittel schon sagt. ich habe mir ein "server" naja ein testscript erstellt, und wollte wissen ob ich so etwas an einem browser senden kann (text) und ja dies ist möglich, mein problem jetzt nur ist wie kann ich ein bild am browser übermitteln? muss das in bytes sein? wenn ja einfach bytes zum browser schicken ???
ich habe hier mal den code wie ich mein script bislang habe... ist nicht viel aber es funtzt ![]() ![]() Code: [AUSKLAPPEN] Global ServerWeb:TTCPStream, ClientsWeb:TList, ClientWeb:TTCPStream
ServerWeb = New TTCPStream If Not ServerWeb.Init() Then Throw("Can't create socket") If Not ServerWeb.SetLocalPort(81) Then Throw("Can't set local port") If Not ServerWeb.Listen() Then Throw("Can't set to listen") ClientsWeb = New TList Function WebConsole() ClientWeb = ServerWeb.Accept() If ClientWeb Then ClientsWeb.AddLast(ClientWeb) EndIf For ClientWeb = EachIn ClientsWeb If ClientWeb.GetState() <> 1 Then ClientWeb.Close() ClientsWeb.Remove(ClientWeb) Continue EndIf If ClientWeb.RecvAvail() Then While ClientWeb.RecvMsg() ; Wend If ClientWeb.Size() > 0 Then Local TCPIP:String = TNetwork.StringIP(ClientWeb.GetLocalIP()) Local TCPPort:Int = ClientWeb.GetLocalPort() Local Befehl:String = ClientWeb.ReadLine() Traffik.EingangBytes = Traffik.EingangBytes + ClientWeb.Size() Print "#Web:" + Befehl ClientWeb.WriteLine "Server ist Online" ClientWeb.SendMsg() ClientWeb.Close() EndIf EndIf Next End Function |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://stackoverflow.com/quest...tocol-in-c
Der Code ist zwar in C, der HTTP-Teil ist aber genau gleich. Die akzeptierte Antwort beschreibt genau was du schicken musst. (/r/n ist das Zeichen für neue Zeile. Wenn du WriteLine verwendest, dann brauchst du das nicht) |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
das bekomme ich bloss nicht hin...
Code: [AUSKLAPPEN] Client.WriteLine("HTTP/1.1 200 OK")
Client.WriteLine("Content - Type:image/png") Client.WriteLine("Content-Length: " + FileSize("000.png")) Local e:TStream = ReadFile ("000.png") While Not Eof(e) Client.WriteByte(d.ReadByte()) Wend und mein nächstes problem wäre wenn im html ein bild vorkommt muss ich dann erst alle bilder schicken? wenn z.b. 5 bilder vorhanden sind? |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast vergessen eine Leerzeile zu schicken bevor du mit den Bytes vom Bild anfängst.
Zu der Frage welche Bilder du bei der HTML verschickst: Da musst du auf den Browser hören. Der fragt ja zuerst "GET / HTTP1.1". Darauf antwortest du mit der HTML Datei. Die beinhaltet jetzt z.B. "abc.jpg" und "123.png". Der Browser wird dann einmal GET /abc.jpg und einmal GET /123.png fragen. Du musst das auslesen und ihm die richtige Datei geben. |
||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
sehr schön. danke ja die leerzeile ![]() aber wie mache ich es nun. wenn im sorce steht <img> bzw 2 bilder habe dann text und dann wieder nen bild. wie kann man das alles übertragen? weil so bekomm ich ja nur einmal ein bild. oder eben nur einmal text... mein versuch wars Code: [AUSKLAPPEN] Client.WriteLine("HTTP/1.1 200 OK")
Client.WriteLine("Date: " + CurrentDate() + " " + CurrentTime()) Client.WriteLine("Server: AlphaUniversOnline") client.WriteLine("X-Powered-By: PHP/5.4.36") Client.WriteLine("Cache-control: no-cache") Client.WriteLine("Pragma: no-cache") Client.WriteLine("Content - Type:image/png") Client.WriteLine("Content-Length: " + FileSize("000.png")) client.WriteLine("") Local e:TStream = ReadFile ("000.png") While Not Eof(e) Client.WriteByte(e.ReadByte()) Wend CloseFile e Local d:TStream = ReadFile ("1.html") While Not Eof(d) Client.WriteLine(d.ReadLine()) Wend CloseFile d |
||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du kannst bei HTTP niemals mehrere Dateien aufeinmal übertragen. Schon gar nicht Text/HTML und Binärdateien (Bilder) zusammen. Nur alles einzeln, und das Fragt dann der Browser entsprechend auch einzeln ab. Es gäbe nur ein Workaround, indem du eine HTML-Seite erstellst, welche ein Bild via Base64 kodiert enthält. Das hat dann aber so direkt nichts mehr mit HTTP zutun. | ||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie funktioniert es dann das webseiten mehrere bilder anzeigen können zudem tabellen und text? | ||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zuerst wird der Source der Webseite abgerufen (in einem ersten HTTP-Aufruf). Dann liest sich der Browser das File durch und findet z.B. x <img>-Tags. Für jedes <img>-Tag fragt der Browser dann in einem einzelnen HTTP-Aufruf dieses eine Bild ab. Das heißt, wenn du eine Seite mit 6 Bildern hast, dann brauchst du insgesamt 7 HTTP-Aufrufe. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
demnach müsste dann so der textausgegeben werden und anschliessend das bild
nur leider wird das nichts... Code: [AUSKLAPPEN] Client.WriteLine("HTTP/1.1 200 OK")
Client.WriteLine("Date: " + CurrentDate() + " " + CurrentTime()) Client.WriteLine("Server: ServerSelbst") client.WriteLine("X-Powered-By: PHP/5.4.36") Client.WriteLine("Cache-control: no-cache") Client.WriteLine("Pragma: no-cache") Client.WriteLine("Content - Type:text/html") Local d:TStream = ReadFile ("1.html") While Not Eof(d) Client.WriteLine(d.ReadLine()) Wend CloseFile d While Client.SendMsg() ; Wend Client.WriteLine("Content - Type:image/png") Client.WriteLine("Content-Length: " + FileSize("000.png")) client.WriteLine("") Local e:TStream = ReadFile ("000.png") While Not Eof(e) Client.WriteByte(e.ReadByte()) Wend CloseFile e While Client.SendMsg() ; Wend Client.close() |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein, so wird das sicherlich nichts. Du musst schon darauf warten, dass der Browser die Bilder von dir will, einfach senden geht nicht. Du müsstest also wenn schon einen (mehr oder weniger) kompletten Webserver schreiben. Dazu müsstest du dir das HTTP-Protokoll genauer anschauen. Das wird dann aber schon ein wenig aufwendiger. | ||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group