Stream - Was ist das
Übersicht

![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja. Und genau danach wächst dir Petersilie aus den Ohren...
Es ist gar nichts weg. Es wird einfach gesendet. Dann wird es empfangen und muss nur noch von Blitz aus dem Puffer ausgelesen werden. FERTIG! Alles wird in einen Zwischenpuffer gespeichert. Da wird überhaupt nichts herausgelöscht, bevor es ausgelesen wurde. Die eigenen Daten kann man auch nicht auslesen, somit braucht man bei einer reinen Peer-to-Peer Verbindung nichts organisieren. |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Nooby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich habe jetzt mal ein paar Tests mit folgenden codes gemacht:
Server: Code: [AUSKLAPPEN] AppTitle("Server")
server = CreateTCPServer(8080) If server Print "Ok" Else Print "Fehler" WaitKey() End EndIf Repeat If Not stream stream = AcceptTCPStream(server) If stream Then WriteString(stream,"Hab dich!") ElseIf ReadAvail(stream) lesen$ = ReadString(stream) If lesen$ = "schreib" WriteString(stream,"isgut") ElseIf lesen$ = "schreib2" WriteByte(Stream,65) EndIf Print lesen$ EndIf Until KeyHit(1) Client: Code: [AUSKLAPPEN] AppTitle("Client")
stream = OpenTCPStream("127.0.0.1",8080) If stream Print "Ok" Else Print "Fehler" WaitKey() End EndIf Repeat If stream schreiben$ = Input() If schreiben$ = "lesen" If ReadAvail(stream) Print "-" + ReadString(stream) Else Print "<kein inhalt>" EndIf ElseIf schreiben$ = "lesen2" If ReadAvail(stream) lesen$ = ReadByte(stream) Print "-" + lesen$ + "-" + Chr(lesen$) Else Print "<kein inhalt>" EndIf Else WriteString(stream, schreiben$) EndIf Else Print "Stream geschlossen!" WaitKey() EndIf Until KeyHit(1) Ich bin zu folgenden Ergebnissen gekommen: 1. Jeder hat sein eigenes Postfach. 2. Der Befehl "writebyte" schreibt an das ende des anderen Postfachs ein Byte. 3. Der Befehl "writestring" schreibt zuerst ein Byte mit der länge des Strings, dann drei Bytes mit der Nummer 0 und dann erst den String. Dementsprechend wird auch so mit dem Befehl "readstring" interpretiert. Steht also beim anwenden von "readstring" ein Byte mit der Nummer 0 am Anfang, werden auch 0 Zeichen ausgelesen. Ich hab nicht alles genau getestet und mir manches dazugedacht, aber das klingt logisch. Hat jemand Einwände? |
||
DAS PERPETUOMOBILE!!!
http://www.sax.de/~stalker/pad/199801/ |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die 3 nullen gibt es nur wenn dein String weniger als 256 Zeichen lang ist. Es wird ein 32-Bit-Integer (4Byte) als Größeninfo gesandt. Das kann Dir im Regelfall aber schnurz sein, da diese ja mit Readstring automatisch eingelesen wird. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Nooby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achja: Muss man eigentlich manuell feststellen, ob eine Verbindung noch vorhanden ist? In meinem Programm steht ja
Code: [AUSKLAPPEN] If stream
[...] Else Print "Stream geschlossen!" WaitKey() EndIf aber das funzt wohl nich... EDIT: Und wieso habe ich keine Verbindung mehr, wenn ich fälschlicher Weise "readstring" anwende? |
||
DAS PERPETUOMOBILE!!!
http://www.sax.de/~stalker/pad/199801/ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group