Netzverbindung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Ekrits

Betreff: Netzverbindung

BeitragMi, Aug 31, 2005 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
mojn jungs,

ich bin 3D Proger aber nun brauch ich eine Netzwerkverbindung zwischen zwei Pc's (oder mehr) und diese bekomm ich net hin (Ich kann nur 3d denken). Ich möchte mit dieser Verbindung lediglich textversenden und gegebenen falls auch daten. PLS Help me.
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE

Hagbard

BeitragMi, Aug 31, 2005 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

robsite.de --> Das Tutorial von Rob laden...
Forensuche
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:23, insgesamt einmal bearbeitet
 

Ekrits

BeitragMi, Aug 31, 2005 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab aber leider blitz 2d/3d
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE
 

f L i P

BeitragMi, Aug 31, 2005 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Siehs dir doch bitte erstmal an, dafür ist es nämlich ausgelegt

MfG fLiP
mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen!
 

Ekrits

BeitragMi, Aug 31, 2005 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
dann sag ma welches du wo gefunden hast ich hab nur für C++ eins gefunden
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE
 

f L i P

BeitragMi, Aug 31, 2005 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
robsite.de/bbkurs2 ... oder so ähnlich, denke da wars Wink

MfG fLiP
mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen!
 

Ekrits

BeitragMi, Aug 31, 2005 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ach da , ich dachte das wär nur für spiele oda so manyyy thx
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE
 

Ekrits

BeitragMi, Aug 31, 2005 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich da jetzt son code zusammen gepackt aber er hat nen fehler den ich nicht weiß HELP ME

Code: [AUSKLAPPEN]


...

;spnr = Spielernummer
;empf$ = empfänger
;nach$ = Nachricht
;
;

...

 If KeyDown (38) Then
  empf$ = Input$("an:")
  nach$ = Input$(":")
  SendNetMsg 1, nach$, spnr,  empf$,(,wichtig)
  If empf$ = "exit" Then StopNetGame
 EndIf
...



dann sagt er immer "Expecting expression"

ok dann mach ich Code: [AUSKLAPPEN]
   SendNetMsg 1, nach$, spnr,  empf$,(1,wichtig)


dann sagt er

"Expectin )"

aber da muss eigentlich ne 1 oder 0 hin.

hab ich aus

http://www.robsite.de/tutorials.php?tut=blitzbasic

da das bb-tutorial 2 und dann da netzwerk

abschnitt : Direct play
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE
 

Medabots1992

BeitragMi, Aug 31, 2005 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ich setze auf UDP da es ja nicht so schlimm ist ob jetzt in der sekunde mal einmal daten ankommen. Bei mir müssen die daten erst nach 11Sek angommen die wichtig sind.
Lerne hier raus:
http://blitzbase.de/befehle2d/createudpstream.htm


Das war bei mir sehr hilfreich und konnte man sehr leicht umbauen zu was brauchbaren.
Hab davon schon nen game gemacht Smile
Das war nur dieser kleine Code der mich zum erfolg gebracht hat, aber weil es für anfänger oder die keine ahnung davon hab hab ich hier mal ne Liste von den Befehlen gemacht:
ich setze auf UDP da es ja nicht so schlimm ist ob jetzt in der sekunde mal einmal daten ankommen. Bei mir müssen die daten erst nach 11Sek angommen die wichtig sind.
Lerne hier raus:
http://blitzbase.de/befehle2d/createudpstream.htm

Das war bei mir sehr hilfreich und konnte man sehr leicht umbauen zu was brauchbaren.
Hab davon schon nen game gemacht Smile
Das war nur dieser kleine Code der mich zum erfolg gebracht hat, aber weil es für anfänger oder die keine ahnung davon hab hab ich hier mal ne Liste von den Befehlen gemacht:
(alles von blitzbase entnommen)
Code: [AUSKLAPPEN]

COUNTHOSTIPS - Diese Funktion sucht nach Hosts mit dem angegebenen Namen. Die Anzahl der Hosts wird gezählt und danach zurückgegeben. Wenn mit dem Parameter Host$ der Wert "" übergeben wird, dann werden alle Hosts gesucht.

Mit der Funktion HOSTIP kann man die IP-Nummer ermitteln.


DOTTEDIP - Diese Funktion wandelt einen Integerwert in eine IP-Nummer. Eine IP-Nummer besteht aus 4 Zahlen - die alle durch Punkte getrennt sind. Diese Nummer ist 32 Bit breit (=Integer). Die Umwandlung ist relativ simpel. Es werden nur die einzelnen Byte-Werte "gesplittet" und als dezimale Zahlen ausgegeben. Aus dem Integerwert 1234567 entsteht somit der String: "0.18.214.135".


CREATEUDPSTREAM - Dieser Befehl erstellt eine UDP-Netzwerkverbindung. Die Portnummer kann angegeben werden. Falls es weggelassen wurde, dann sucht BlitzBasic nach einem freien Port. Die Nummer des Ports kann mit UDPSTREAMPORT ermittelt werden.

CREATEUDPSTREAM liefert einen Wert, der die Identität des Datenstroms angibt. Dieser Wert kann z.B. mit Read/Write-Befehlen verwendet werden. Sollte nur eine 0 zurückgeliefert werden, so konnte keine UDP-Verbindung erstellt werden. Mit CLOSEUDPSTREAM kann eine Verbindung wieder geschlossen werden.


WRITEBYTE - Byte senden
WRITESTRING - String senden
WRITEFLOAT - Float senden
...

SENDUDPMSG - Mit diesem Befehl kann eine Nachricht an eine IP-Adresse (und Port-Adresse) als UDP-Protokoll gesendet werden. Bevor man es benutzen kann, muss man allerdings noch CREATEUDPSTREAM ausführen. Eine Nachricht kann mit normalen WRITE-Befehlen geschrieben werden. Erst danach kann eine Nachricht mit SENDUDPMSG gesendet werden.

RECVUDPMSG - Diese Funktion kann neue Nachrichten empfangen und eine IP-Adresse zurückliefern, wenn eine Nachricht aus dem Netzwerk empfangen wurde. Andernfalls liefert es 0 zurück. Mit DOTTEDIP kann aus dem Integer eine normale IP-Adresse errechnet werden. Die Nachricht kann mit normalen READ-Befehlen ausgelesen werden.

Bevor man es benutzen kann, muss man allerdings noch CREATEUDPSTREAM ausführen. Die Nachricht wird mit RECVUDPMSG empfangen. Mit UDPMSGPORT kann der benutzte Port ermittelt werden. Mit SENDUDPMSG kann dagegen eine Nachricht verschickt werden.


READAVAIL - Diese Funktion kann für Datei- und Netzwerkzugriffe benutzt werden. READAVAIL ermittelt dabei die Anzahl der Bytes, die garantiert ausgelesen werden können. Wurde eine Datei geöffnet, so liefert diese Funktion die Anzahl der Bytes, die in den Speicher abgelegt wurden. Wenn diese Funktion mit einer Internetverbindung benutzt wird, dann liefert es die Anzahl der Bytes, die über das Internet angekommen sind.

Benutze auch EOF. Diese Funktion ermittelt, ob das Ende einer Datei erreicht ist.

CLOSEUDPSTREAM - Dieser Befehl schließt eine UDP-Verbindung, die mit CREATEUDPSTREAM geöffnet wurde. CREATEUDPSTREAM liefert einen Wert, der zusammen mit CLOSEUDPSTREAM benutzt werden muss.

Durch eine UDP-Verbindung kann man auf ein Netzwerk zugreifen.


So das müsste reichen auch das es für die anfänger verstendlich ist und wenn nicht dann weis ich auch nicht weiter.
Mir hat es zumindest geholfen.
 

Ekrits

BeitragMi, Aug 31, 2005 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich habs kapiert aber man muss immer zahlen eingeben und so. ich wollte eigentlich nen chat machen und da ist es viel zu umständlich.
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE
 

Medabots1992

BeitragMi, Aug 31, 2005 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ehm du sollst nicht den code verwenden sondern draus lernen Wink
Ok ich mache dir ein beispiel code jetzt wo ich es selber schon kann.
 

Medabots1992

BeitragMi, Aug 31, 2005 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok hab den code gebasstelt und getestet
Der code ist leider nicht so geworden wie man immer wolte aber egal.
Um eine Nachricht zu schreiben muss man Leertaste drücken was ja da Steht Wink
Viel Spaß mit dem und das beinhaltet einen teil wie ich in meinen Vorletztem Post geschrieben hab. Hier muss man auf Byte Float und String aufpassen.
Byte wird als erstes Gesendet um sich zu stellen was die andere Seite tun muss, aber spiele mit dem code nicht rum.
Sondern versuche ihn zu kapieren und daraus nutzen zu ziehen.
Also hier mein UDP Chat:
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,32,2
AppTitle(\"Chat\")
fps = CreateTimer(50)

;Connection
;Global server_ip$ = Input(\"Geben Sie die Server Ip ein:\")
Const server_port = 12511

;Stream erstellen
stream = udp_Stream_initialize(12511)

;Beim Server anmelden.
WriteByte(stream,2)
SendUDPMsg(stream,INT_IP(server_ip$),server_port)

Print \"Drücke Leertate um eine Nachricht zu senden!\"

;Hauptschleife
Repeat
WaitTimer(fps)

;Wenn Leertaste gedrückt wird, Testnachricht erstellen.
If KeyHit(57) And zeit < MilliSecs() Then send=1:zeit=MilliSecs() + 500
;Testpaket zum Server.
If send=1 And MilliSecs() > zeit Then
nachricht$=Input$(\">\")
WriteByte(stream,1)
WriteString(stream,nachricht$)
no$ = \"An:\"
nach$ = no$ + server_ip$
WriteString(stream,nach$)
SendUDPMsg(stream,INT_IP(server_ip$),server_port)
send=0
Print \"Nachricht gesendet.\"
EndIf

;Wenn eine Nachricht erhalten wurde
If RecvUDPMsg(stream) Then
byte = ReadByte(stream)
Select byte

;Testpaket.
Case 1
string1$ = ReadString(stream)
an$ = ReadString(stream)
Print an$+\":\"+string1$

End Select
EndIf

Until KeyHit(1)
;Beim Server abmelden.
WriteByte(stream,3)
SendUDPMsg(stream,INT_IP(server_ip$),server_port)
CloseUDPStream(stream)
End


;UDP Stream initialisieren. - falls Port belegt ist, anderen wählen.
Function Udp_stream_initialize(port)
Repeat
udp_stream = CreateUDPStream(port)
If udp_stream = 0 Then port = port + 1
Until udp_stream <> 0
Return udp_stream
End Function

;Funktion zum Umwandeln von String IPs in Integer.
Function INT_IP(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
 

Ekrits

BeitragDo, Sep 01, 2005 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ok das iss nen guter code . Ich hab aber jetzt schon das Spiel auf direct play ausgelegt und ich hab keine lust das ganze spiel m programmieren.

Also ich bräuchte eine Lösung für DIRECT PLAY
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE
 

Medabots1992

BeitragDo, Sep 01, 2005 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich bei mir auch gemacht ich hab denn ganzen code anders gemacht in so 30minuten war alles wieder so wie es sein sollte.
Aber gefunzt hat es net weil ich das senden falsch gemacht hab udn somit war es immer gesprungen das bild und hab gesehen bei mir war ne zeile zuwenig als ich es dann hatte hat es funktioniert Smile
Aber ich würde liebr das benutzen was man schon hat, weil sonst frägt man nur und man erarbeitet sich nix.
Ich wollte 4Spieler game machen wollte aber einen fragen wie ich das machen sollte dann hab ich nen server gestartet und der schickt jeden den richtigen spielernummer und namen und schon hat es funktioniert. Bin aber weiterhin am proggen und weil ich nur 2PCs hab kann ich nur 2Player machen. Der rest muss ich für KI auslegen was ja ne menge arbeit werden kann. Der Computer gegner darf ja net immer richtig liegen sondern auch mal falsch und das muss man für das spiel erst schaffen. Ich bin aber immernoch beim üben und ich progge alles jetzt ohne vorlage um mich zu testen. Natürlich benutze ich die Onlinehilfe uhne sie verloren Exclamation Exclamation Exclamation
 

Ekrits

BeitragDo, Sep 01, 2005 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok hat sich erledigt ich darf net wichtig schreiben sonder nur 1 oder 0
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE
 

Ekrits

BeitragFr, Sep 02, 2005 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach man ich kein Bock mehr ich hab nen freund meine beide programme gegeben und mit den beiden (Direct Play / UDP) aber ich bekomm keine Verbindung mit im.

Direct PlayCode: [AUSKLAPPEN]


Graphics 800,600
;AppTitle "SplntProg Chat"
;hoch =  hostspiel
;joch =  joinspiel
;spnr =  spielernummer
;nach =  nachrichttyp
;var =  nachricht
;spna =  spielername
.Marke

;hinter=LoadImage("C:\Daten\hintergrundmini.bmp")
;logo=LoadImage("C:\Daten\progger.bmp")
;TileBlock hinter, 0,0
;DrawImage logo, 245, 250



Print ""
Print "1 - Hosten"
Print "2 - Joinen"
wahl = Input$("Auswahl:")

 If wahl = 1 Then hoch$ = Input$("Neuer Channel:") spiel = HostNetGame("" + hoch + "")

 If wahl = 2 Then
  joch$ = Input$("Name des Channel:")
  spiel = JoinNetGame(joch$, Host_IP$)
  If joch$ = 0 Then Print "" Print "Channel konnte nicht gefunden werden" Print "" Goto Marke
 EndIf
 Name$ = Input$("Nickname:")

Print "20%"
Print "40%"
Print "60%"
Print "80%"
Print "100%"

Repeat
 var = RecvNetMsg()
 nachtype = NetMsgType()
 spnr = NetMsgFrom()
 spna$ = NetPlayerName$(spnr)
 nach$ = NetMsgData$()
 var = RecvNetMsg()
   
 If nachtype = 100 Then
   Print "Neuer Spieler"
  ElseIf nachtype = 101 Then
   Print "Ein Spieler hat die Sitzungs verlassen"
  ElseIf nachtype = 102 Then
   Print "Der Host hat die Sitzung verlassen"
  ElseIf nachtype = 200 Then
   Print "- FEHLER - Sitzung wird geschloßen"
  EndIf

 If KeyDown (15) Then
  empf$ = Input$("an:")
  nach$ = Input$(":")
  SendNetMsg 1, nach$, spnr,  empf$,1
  If empf$ = "exit" Then StopNetGame
 EndIf

 If KeyDown(1) Then End

 If var = 1 Then
  Print "" + spna$ + "sagt: " + nach$ + ""
 EndIf
;msg =
Until KeyHit(1)





So und nun den UDP:Code: [AUSKLAPPEN]


AppTitle "Progger Chat"
Print "Sample UDP Communications"

Inp_Port=4000
Out_Port=4001

Print "LOCAL IP:"

ip_count=CountHostIPs(GetEnv("localhost"))
For i=1 To ip_count
   Print DottedIP(HostIP(1))
Next

Print "Enter Destination IP#: xxx.xxx.xxx.xxx"
Dest_IP$=Input$(">")
IP= INT_IP(Dest_IP$)

Print ""
Print "Starting Chat TO quit"

udp_rd=CreateUDPStream(Inp_Port)
udp_wr=CreateUDPStream(Out_Port)

.loop
byte1=GetKey()
If byte1>0 Then
   If Byte1=13 Then
      Print
      WriteByte(udp_wr,byte1)
      SendUDPMsg udp_wr,IP,Inp_Port
   Else
      Write Chr(Byte1)
      WriteByte(udp_wr,byte1)
      SendUDPMsg udp_wr,IP,Inp_Port
   EndIf
EndIf

IP_rd=RecvUDPMsg(udp_rd)

If IP_rd <> 0 Then
   Buflen=ReadAvail(udp_rd)
   If Buflen> 0 Then
      byte1=ReadByte(udp_rd)
      If byte1=13 Then
         Print
      Else
         Write Chr$(byte1)
      EndIf
   EndIf
EndIf

If KeyDown(1) Then Goto quit
Goto loop

.quit
CloseUDPStream udp_wr
CloseUDPStream udp_rd

Function INT_IP(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


Ich brauche dringend hilfe den mein Spiel soll endlich fertig werden.
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group