2 UDP und TCP Fragen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Kernle 32DLL

Betreff: 2 UDP und TCP Fragen

BeitragSa, Feb 05, 2005 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !

Ich wollte euch mal was fragen,undzwar bastle ich gerade an einem
Internetspiel,bzw, einem Spiel das man im Internet spielen kann.

Bisher bin ich noch nicht sehr weit gekommen,und bastle gerade an
der übertragung der Daten.

Doch genau das kann ich nicht testen,da ich hier in einem Lan hänge,
und alle PC´s mit denen ich es hier halt testen könnte die gleiche IP
haben Sad.

Nun,also könnte vielleicht mal jemand testen ob folgendes läuft ? :

Code: [AUSKLAPPEN]

Global Host$
Global IP$
Global IP2$
Global XCord#
Global YCord#
Global ZCord#
Global Objekte


;---------------------------------------
 is_online=OpenTCPStream("kernel32dll.milten.lima-city.de",80)
If is_online
    req$="IP.php"
    ; Request an das Serverscript schicken
    WriteLine is_online,"GET /"+req$+" HTTP/1.1"
    WriteLine is_online,"Host: "+ "kernel32dll.milten.lima-city.de"
    WriteLine is_online,"User-Agent: daten"
    WriteLine is_online,"Accept: */*"
    WriteLine is_online,"" 
    ; Daten empfangen
    For i=1 To 8 ; Header überlesen
        trash$=Trim(ReadLine(is_online))
    Next
        IP3$=Trim(ReadLine(is_online))
    CloseTCPStream is_online
EndIf
;---------------------------------------


;---------------------------------------------
Graphics3D 800,600,32,2
SetBuffer = BackBuffer()
;---------------------------------------------
camera=CreateCamera()
CameraRange camera,1,10009
PositionEntity camera,0,0,-16
;---------------------------------------------


Objekt = CreateCube ()


Host$=Input$("Hostmodus ? (1 = an,0 = aus):")


;IP$ = selber
;IP2$ = der andere

;---------------------------------------
If Host$ = 1
;---------------------------------------

Print "geben sie die Ip ein mit der sie verbinden wollen:"
Print "(ihre IP ist:" + IP3$ + " [Achtung: Internet-IP und nicht Lan-IP] )
IP2$=Input$("")
Print "connecting..."

sendstream=CreateUDPStream(4001)


Repeat

   If KeyDown (205)
      XCord# = Xcord# + 1
   EndIf
   
   If KeyDown (203)
      XCord# = Xcord# - 1
   EndIf
   
   If KeyDown (200)
      ZCord# = Zcord# + 1
   EndIf
   
   If KeyDown (208)
      ZCord# = Zcord# - 1
   EndIf

      WriteLine(sendstream,XCord#)
      WriteLine(sendstream,YCord#)
      WriteLine(sendstream,XCord#)
      SendUDPMsg sendstream,IP2$

      PositionEntity Objekt,XCord#,YCord#,ZCord#
      RenderWorld
      Flip
      
Until KeyHit (1)

;---------------------------------------
Else
;---------------------------------------

Print "geben sie die IP ein mit der sie verbinden wollen:"
Print "(ihre IP ist:" + IP3$ + " [Achtung: Internet-IP und nicht Lan-IP] )
IP2$=Input$("")
Print "connecting..."

Readstream=CreateUDPStream(4000)

Repeat

egal = RecvUDPMsg (readstream)
XCord#=ReadLine$ (Readstream)
YCord#=ReadLine$ (Readstream)
ZCord#=ReadLine$ (Readstream)

PositionEntity Objekt,XCord#,YCord#,ZCord#
RenderWorld
Flip
Until KeyHit (1)

;---------------------------------------
EndIf
;---------------------------------------


Es kommt nicht drauf an den Code zu verstehen,ich muss nur wissen
ob es läuft.


Gut,also soviel dazu.Nun etwas anderes:

....

Ich möchte eine Auto-Update funktion in mein Spiel einbauen,also das
man nach wunsch beim starten des Spiels nach updates für das Spiel
sucht und runterläd. Wie realisiere ich das ? Ich dachte an folgendes:

Ich habe 2 Exen im Hauptverzeichniss des Spiels:
Start.exe und Game.exe
Wenn man Start.exe startet,connectet das Programm zu
einer Textdatei im Internet,in der die neuste Versionsnummer steht.
Dann wird geprüft ob die dort angegebene Versionsnummer neuer ist.
Wenn nicht,wird Game.exe,also das Spiel gestartet.Wenn doch,läd das
Programm aus dem Verzeichniss "Update" auf meinem Server alle
Daten runter und legt sie im Hauptverzeichniss des Spiels ab.
Start.exe wird natürlich nicht geupdated.

Danach wird das Spiel beendet.

Noch eine Sache: Start.exe bezieht die eigene Versionsnummer aus
einer im Verzeichniss liegenden Version.dat,die beim update auch
geupdated wird.


Nun,ich will jetzt keinen Code haufen,nur ideen,befehle,ect. wie
ich das lösen könnte.Das Update muss nicht schnell sein,hauptsache
es funktioniert !


Gruß:
Kernle

PS: Phu...das war viel arbeit das alles zu schreiben...
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009
 

NetPad

BeitragMo, Feb 07, 2005 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
aaaalso....

1. selbstverständlich haben in einem lan nicht alles die selbe IP! du meinst dass sie im internet die selbe IP haben, jedoch liegt das an dem router. wenn du in der eingabeaufforderung "ipconfig" eingibst siehst du die IPs.

2. das mit den Updates finde ich keine gute idee. solche spiele sind eigentlich selten zu updaten. falls doch, sollte sich der user selbst informieren.
falls du doch unbedingt so etwas einbauen willst, musst du z.b über tcp auf port 80 eine http verbindung herstellen und dann mit get die text datei anfordern. die informationen können dann ausgewertet werden. falls es zu updaten wäre, öffnest du einfach ein fenster des standartbrowser mit der url des updates.

grs NP

Kernle 32DLL

BeitragDi, Feb 08, 2005 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das oben genannte Script stellt selbstständig die
eigene IP,mithilfe einer PHP Datei im Internet fest.
Selbst ist der mann Mr. Green

Die Idee,das dann ein brwoserfenster zum update geöffnet wird
(oder man da halt einen Link kriegt) finde ich gut.Ich denke
das werde ich so machen Razz
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009
 

noir

BeitragSa, Feb 12, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ok hier kommt der code zum datentransfer den du(kernel) im Blitzchat gefordert hast Wink

Code: [AUSKLAPPEN]

;######################
Senden =1 ;1=schicken, sonst empfangen

file$ = "test.exe"  ;zu verschickende datei

Serverip$ = "127.0.0.1"
;######################


;Datei verschicken
If Senden = 1 Then
 tcp = CreateTCPServer(8000)

 Print "Warten ..."

 Repeat
  strStream=AcceptTCPStream(tcp)
 Until strStream

 Print "Verbindung wurde aufgebaut..."

 datei_verschicken = ReadFile(file$)

 bank=CreateBank(1000)
 time = MilliSecs()   


 WriteString strStream, file$ ;Dateiname schicken

 Repeat
   n=ReadBytes(bank,datei_verschicken,0,1000)
 ;es werden immer 1000 bytes in die bank geschrieben und dann   
 ;verschickt, die zahl kannst du ändern, ist egal
   WriteBytes bank,strStream,0,n         
 Until n<>1000

 CloseTCPServer tcp
 Print "Uploadzeit: " + (MilliSecs()-time)/1000 +" Sekunden."
 WaitKey
EndIf



;Datei empfangen
If Senden <> 1 Then

 tcp = OpenTCPStream(Serverip$ ,8000)

  If tcp Then

   
   bank=CreateBank(1000)
   time = MilliSecs()

   filename$ = ReadString (tcp)
   datei = WriteFile(filename$+".tmp") 
;das .tmp hab ich nur dran gehängt falls du am gleichen pc
;testen willst (du kannst ja nicht die orginal datei übers
;schreiben (oder lass es in einen andern ordner schreiben)
   Repeat
    n=ReadBytes(bank,tcp,0,1000)
    WriteBytes bank,datei,0,n      
   Until n<>1000


   FreeBank bank
   CloseFile datei
   CloseTCPStream tcp

   Print "Downloadzeit: " + (MilliSecs()-time)/1000 +" Sekunden."
   WaitKey

  EndIf
EndIf



wenn du fragen hast frag Very Happy
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group