Es wird nichts gesendet
Übersicht

![]() |
the FR3AKBetreff: Es wird nichts gesendet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mir ein kleines 3D Testprogramm geschrieben mit dem ich versuchen will eine Lanverbidnung herzustellen...
Mein Problem ist das die Positionen usw. nicht an den Client/Host gesendet werden... er der Gesamte Code: Code: [AUSKLAPPEN] host_port=9998
client_port=9999 eing$=Input("Für Host bitte host eingeben für Join join:") If eing$="join" Then hosting=1 Else hosting=2 End If Type player Field name$ Field ip Field x# Field y# Field z# Field entity End Type Global p.player Global stream Global THE_STRING$ If hosting = 1 stream = createudpstream(client_port) else stream = createudpstream(host_port) EndIf myname$=input("Dein Name:") If hosting = 1 my_IP$=Input("IP-Addresse:") IP=intip(my_ip$) writebyte(stream, 1) writeline(stream, MyName$) sendudpmsg(stream, IP, host_port) EndIf timer = CreateTimer(40) ;max. FPS auf 40 setzen ;=================================================== Graphics3D 800,600,0,2 SetBuffer BackBuffer() Global cam=createcamera() PositionEntity cam,0,10,0 Global block=createcube() ScaleEntity block,2,2,2 EntityParent block,cam PositionEntity block,0,-10,30 EntityColor block,rnd(1,255),rnd(1,255),rnd(1,255) PointEntity cam,block While Not KeyHit(1) WaitTimer(timer) If hosting=1 Then updateclient() Else If hosting=2 Then updatehost() EndIf If KeyDown(200) Then MoveEntity cam,0,0,1 End If If KeyDown(208) Then MoveEntity cam,0,0,-1 End If If KeyDown(205) Then MoveEntity cam,1,0,0 End If If KeyDown(203) Then MoveEntity cam,-1,0,0 End If RenderWorld updateworld flip Wend Function intIP(IP$) a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a4=Int(IP$) Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4 End Function Function updatehost() For p.player = Each player ;jeden Spieler durchlaufen If Not p\ip = msgfrom ;verhindern, dass sich der Spieler selbst erkennt WriteByte(stream,3) ;3 in unseren Stream schreiben Writefloat(stream,entityx(block)) ;x-pos Writefloat(stream,entityy(block)) ;y-pos Writefloat(stream,entityz(block)) ;z-pos sendUDPMsg(stream, p\ip, client_port) ;das byte und die positionen an jeden im chat senden End If Next If RecvUDPMsg(stream) msgtype = ReadByte(stream) msgFrom = UDPMsgIP(stream) Select(msgtype) Case 1 p.player = New player ;neuen player adden p\ip = msgfrom p\name$ = readline(stream) ;namen des spielers aus dem stream lesen New_player_name$ = p\name$ p\x#=0 p\y#=-10 p\z#=50 p\entity=createcube() PositionEntity p\entity,0,-10,50 print("Neuer Mitspieler: " + p\name$) For p.player = Each player ;jeden Spieler durchlaufen If Not p\ip = msgfrom ;verhindern, dass sich der Spieler selbst erkennt WriteByte(stream,1) ;1 in unseren Stream schreiben WriteLine(stream,New_player_name$) ;namen des neuen spielers in den stream packen SendUDPMsg(stream, p\ip, client_port) ;das byte und den namen des neuen an jeden im chat senden EndIf Next Case 2 ;Nachricht erhalten the_msg$ = Readstring(stream) Print(the_msg$) Case 3 ; positionen übergabe For p.player = Each player ;jeden Spieler durchlaufen If Not p\ip = msgfrom ;verhindern, dass sich der Spieler selbst erkennt End p\x#=readfloat(stream) ;xpos p\y#=readfloat(stream);ypos p\z#=readfloat(stream) ;zpos PositionEntity p\entity,p\x#,p\y#,p\z# EndIf Next End Select ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End if End Function Function updateclient() For p.player = Each player ;jeden Spieler durchlaufen If Not p\ip = msgfrom ;verhindern, dass sich der Spieler selbst erkennt WriteByte(stream,3) ;3 in unseren Stream schreiben Writefloat(stream,entityx(block)) ;x-pos Writefloat(stream,entityy(block)) ;y-pos Writefloat(stream,entityz(block)) ;z-pos sendUDPMsg(stream, p\ip, host_port) ;das byte und die positionen an jeden im chat senden End If Next If RecvUDPMsg(stream) msgtype = ReadByte(stream) msgFrom = UDPMsgIP(stream) Select(msgtype) Case 1 p.player = New player ;neuen player adden p\ip = msgfrom p\name$ = readline(stream) ;namen des spielers aus dem stream lesen New_player_name$ = p\name$ p\x#=0 p\y#=0 p\z#=50 p\entity=createcube() PositionEntity p\entity,0,0,50 print("Neuer Mitspieler: " + p\name$) For p.player = Each player ;jeden Spieler durchlaufen If Not p\ip = msgfrom ;verhindern, dass sich der Spieler selbst erkennt WriteByte(stream,1) ;1 in unseren Stream schreiben WriteLine(stream,New_player_name$) ;namen des neuen spielers in den stream packen SendUDPMsg(stream, p\ip, host_port) ;das byte und den namen des neuen an jeden im chat senden EndIf Next Case 2 ;Nachricht erhalten the_msg$ = Readline(stream) Print(the_msg$) Case 3 ;positionen übergabe For p.player = Each player ;jeden Spieler durchlaufen If Not p\ip = msgfrom ;verhindern, dass sich der Spieler selbst erkennt p\x#=readfloat(stream) ;xpos p\y#=readfloat(stream);ypos p\z#=readfloat(stream) ;zpos PositionEntity p\entity,p\x#,p\y#,p\z# EndIf Next End Select EndIf End Function End |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nun, der UDP Stream wurde gewiss erst aufgebaut und du hast sicher auch den Port aus der nachricht ausgelesen und nicht einfach irgendwas festgelegt was vom client / router evtl geändert wurde oder? ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich versteh nicht was du damit meinst... kann man das auch anderst Formulieren?? | ||
![]() |
AmateurBBBetreff: UDP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Muss das Spiel unbedingt über UDP laufen oder geht auch DirectPlay? Das ist glaub ich einfacher zu programmieren... | ||
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/ |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
JA es soll UDP sein ![]() Ich habe es jetzt alleine hinbekommen...habe dafür aber einen völlig neuen Code schreiben müssen ![]() |
||
![]() |
AmateurBBBetreff: Gut so... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich wollte den Code eigentlich verbessern, aber irgendwie macht das mein Rechner nicht mehr mit. Allerdings läuft auch kein DirectPlay mehr. Kann mir da jemand helfen? | ||
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/ |
Marek |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gehts allgemein oder nur bei BlitzBasic nicht mehr? | ||
Wer lesen kann ist klar im Vorteil... |
![]() |
AmateurBBBetreff: BB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es geht nur unter BlitzBasic nicht mehr... ![]() |
||
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/ |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klingt sehr nach Firewall oder etwas ähnlichem. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
AmateurBBBetreff: Firewall is aus... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Firewall ist eigentlich aus... vielleicht Firewall ausschalten und neustarten... | ||
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/ |
![]() |
AmateurBBBetreff: funktioniert auch nicht :-( |
![]() Antworten mit Zitat ![]() |
---|---|---|
...funktioniert auch nicht...
aber der code ist in Ordnung, oder? Code: [AUSKLAPPEN] AppTitle "Spielname" While wahl < 1 Or wahl > 2 Cls Print "Bitte wählen:" Print " 1. Spiel erstellen" Print " 2. Spiel beitreten" wahl=Input("Auswahl: ") wahl=Int(wahl) Wend Color 0, 255, 0 If wahl = 1 Then AppTitle "Spiel erstellen" Print "Auswahl: Spiel erstellen." Print "Erstelle Netzwerkspiel..." host=HostNetGame("Spiel") If host = 2 Then Print "...erfolgreich." n = CountHostIPs("") For apl = 1 To n Print "Ihre IP-Adresse ist: "+DottedIP$(HostIP(apl)) If apl < n Then Print "und" Next myname$=GetEnv$("USERNAME")+" an "+GetEnv$("COMPUTERNAME") If myname$ = "" Then myname$=Input$("Ihr Name: ") EndIf playerID=CreateNetPlayer(myname$) Color 255, 255, 0 Print "Spiel beginnt mit EINGABE!" Color 0, 255, 0 FlushKeys While Not KeyHit(1) If RecvNetMsg() Then msgType=NetMsgType() Select msgType Case Is > 0 And is < 99 Print "(Nachricht zugeschickt von: "+ NetMsgFrom() + ")" Print "(Nachricht zugeschickt an: "+ NetMsgTo() + ")" Print "Nachricht: "+NetMsgData$() Case 99 Color 255, 0, 0 Print "FREMDES STARTZEICHEN!" Case 100 Print NetPlayerName(NetMsgFrom()) + " ist dem Netzwerkspiel beigetreten." Case 101 Print "Ein Spieler hat das Netzwerkspiel verlassen." Case 102 Print "Sie sind nun Leiter des Spieles." Case 200 Color 255, 0, 0 Print "Ein Fehler ist aufgetreten." End Select End If If KeyHit(28) Then SendNetMsg(99, "Start", playerID) Exit EndIf Wend Else Color 255, 0, 0 Print "Fehler beim Erstellen eines Netzwerkspiels!" EndIf Else AppTitle "Spiel beitreten" Print "Auswahl: Spiel beitreten." n = CountHostIPs("") auswahl$=Input$("Bitte IP-Adresse des Leiters eingeben: ") Print "Verbinde..." client=JoinNetGame("Spiel", auswahl$) If client = 1 Then Print "Erfolgreich..." myname$=GetEnv$("USERNAME")+" an "+GetEnv$("COMPUTERNAME") If myname$ = "" Then myname$=Input$("Ihr Name: ") EndIf playerID=CreateNetPlayer(myname$) Color 255, 255, 0 Print "Warte auf Startzeichen..." Color 0, 255, 0 While Not KeyHit(1) If RecvNetMsg() Then msgType=NetMsgType() Select msgType Case Is > 0 And is < 99 Print "(Nachricht zugeschickt von: "+ NetMsgFrom() + ")" Print "(Nachricht zugeschickt an: "+ NetMsgTo() + ")" Print "Nachricht: "+NetMsgData$() Case 99 Print "Start!" Exit Case 100 Print NetPlayerName(NetMsgFrom()) + " ist dem Netzwerkspiel beigetreten." Case 101 Print "Ein Spieler hat das Netzwerkspiel verlassen." Case 102 Print "Sie sind nun Leiter des Spieles." Case 200 Color 255, 0, 0 Print "Ein Fehler ist aufgetreten." End Select End If Wend Else Color 255, 0, 0 Print "Fehler beim Beitreten in ein Netzwerkspiel!" EndIf EndIf AppTitle "Spiel" RuntimeError "Ende des Programms" StopNetGame() |
||
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/ |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ZoneAlarm und sicher auch andere Firewalls sind auch im inaktiven zustand aktiv | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
AmateurBBBetreff: Das weis ich... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das habe ich auch schon mitbekommen, aber da ich vor einer Woche erst den Rechner neu formatiert habe, ist noch kein so ein Programm drauf... | ||
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/ |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ...auch im inaktiven zustand aktiv
-> o0? Also Fr3ak und ich haben beim testen festgestellt, dass auch mit geschlossenen ports die WHOIS nachricht (Sprich ein byte, mehr nicht) gesendet wird. Alle darauffolgendes lines und bytes jedoch nichtmehr, wofür muss man also die ports offen haben und wofür nicht? Ich selbst habe keine Firewall auf dem Rechner, die Arbeit macht die Fritzbox. |
||
Starfare: Worklog, Website (download) |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das kommt sehr auf die Box / Router an.
Wenn du höchste Sicherheit hast musst du schon für die WHOIS Ports offen haben. Meist geht das noch ohne, aber ab dem Punkt wo er Pings senden will, wird geschluckt. Man kann allerdings durchkommen. Such Mal auf Heise nach dem Skype Artikel. Dort wird beschrieben wie man auf geniale Art und Weise dynamische Portfreigaben aufbauen kann. (ohne UPNP) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hört sich ein wenig gefährlich an...
Der Punkt der mich so interessiert ist, dass ein byte durchkommt, 5 bytes aber nicht. |
||
Starfare: Worklog, Website (download) |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es kommt nicht 1 byte durch.
Es kommt eine spezielle Standardnachricht durch. Und ist nicht gefährlich, da beide Seiten da ja mitmachen müssen (sie arbeiten zusammen mit einem masterserver und helfen sich gegenseitig durch zu kommen. einer alleine kann das net und ohne masterserver gehts auch net ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sonst wärs ja auch gefährlich ![]() Unser BB Programm sah so aus, dass nach der IP Eingabe ein byte an die eingegebene IP gesandt wurde, um dem Host mitzuteilen, das man da ist, und zu fragen, wer noch da ist (WHOIS). Als aber die positionen der Spieler drankamen, (x,y,z,pitch,yaw) gings nichtmehr... |
||
Starfare: Worklog, Website (download) |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
=D
Zitat: Als aber die positionen der Spieler drankamen, (x,y,z,pitch,yaw) gings nichtmehr...
Jop...dann hab ich nen komplett neuen und eigenen Code gecodet und hab da von anfang alles überlegt und dann gings =D |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich erinnere mich... den musste mir ma schicken... egal, privatgespräche hin und her, ich glaub das hier sollte jemand zumachen ^^ | ||
Starfare: Worklog, Website (download) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group