TCP Datenübertragung
Übersicht

MatthiasBetreff: TCP Datenübertragung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay. Auch ich Interessiere mich für die Datenübertragung via Internet(TCP)
Dazu gibt es auf BlitzBase auch ein wunderbares Beispiel. Allerdings hat dieses Beispiel einen winzig kleinen Harken. Denn es überträgt die Daten nur einmal. Das reicht mir aber nicht ,denn die Daten müssen alle 25ms neu übertragen werden. Gibt es nicht irgendwo ein Code wie der auf BlitzBase der allerdings die Daten immer wieder überträgt und nicht nur einmal???? http://www.blitzbase.de/befehl...server.htm Meine Bemühungen fuctionieren irgendwie nicht und ich weiß einfach nicht warum. Code: [AUSKLAPPEN] Graphics 300,100,16,2 svrGame=CreateTCPServer(8080) If svrGame<>0 Then Print "Server erfolgreich gestartet" Else Print "Server konnte nicht gestartet werden" End End If While Not KeyHit(1) strStream=AcceptTCPStream(svrGame) If strStream Then Print ReadString$(strStream) Delay 2000 Else Print "Keine Daten mehr..." Delay 25 End If Wend CloseTCPServer svrGame End Code: [AUSKLAPPEN] ;Client strmGame=OpenTCPStream("127.0.0.1",8080) If strmGame<>0 Then Print "Client erfolgreich verbunden" Else Print "Konnte keine Verbindung herstellen" WaitKey End End If Repeat Strr$="Wert:"+A strmGame=OpenTCPStream("127.0.0.1",8080) WriteString strmGame,Strr$ CloseTCPStream strmGame Print Strr If KeyDown(1)=1 Then End Delay 25 A=A+1 Forever |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das kannst du auch selbst machen.
Aber einfach alle 25ms übertragen ist nicht (überhaupt alle 25ms ist nicht, dazu ist die Internet Latency nämlich zu hoch bei den meisten usern) Was du machen musst ist folgendes: Client: - setze status auf datenübertrung - startet netzwerk schleife - wenn status auf Datenübertragung: übertrage daten - setze status auf "wait for ok" (heisst wenn der server ein OK in den stream geschrieben hat) - falls readavail() und OK vom server gelesen, setze status auf übertrage daten - wiederhole dies Server: - starte schleife - check readavail(), wenn was da ist, lese es und schreibe danach das OK in den stream - wiederhole dies Hoffe das gibt dir eine Idee Alternativ kannst du das warten auf das OK und das schreiben von diesem Weglassen und einfach alle XX ms schreiben. Aber wie gesagt, mit 25 wirst du tendentiell eher was zubomben als gross freude haben. speziell da TCP in Blitz die folge hat, dass das programm stehen bleibt bis vom server das signal kommt das die daten korrekt angekommen sind, was 2x minimum latency bedeutet. Für Echtzeit musst du UDP nutzen und Reliable Transfer etc selbst implementieren. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank Dreamora.
So weit Functionierts jetzt. Allerdings spuckt der Server beim Beenden eine Fehlermeldung aus und zwar abnormal program termination. Eigentlich müste es mich nicht stören da das Programm ja sowieso zu Ende ist aber, es stört mich trozdem. Wie kann mann diese Fehlermeldung umgehen? Code: [AUSKLAPPEN] svrGame=CreateTCPServer(8080) If svrGame<>0 Then Print "Server erfolgreich gestartet" Else Print "Server konnte nicht gestartet werden" End End If While Not KeyHit(1) strStream=AcceptTCPStream(svrGame) If strStream Then Print ReadString$(strStream) Delay 100 Else Print "Keine Daten mehr..." Delay 1000 End If Wend If svrGame Then CloseTCPServer svrGame End Code: [AUSKLAPPEN] Repeat strmGame=OpenTCPStream("127.0.0.1",8080) If StrmGame<>0 Then Cool=Cool+1 WriteString strmGame,"SuperCool^"+Cool CloseTCPStream strmGame End If If KeyDown(1)=1 Then End Delay 100 Forever |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group