TCP Server

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

KaDuZa

Betreff: TCP Server

BeitragSo, Apr 19, 2009 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Wink
ich habe mich mal ranngemacht einen server zu proggen der die bildkorodinaten an den clienten sended , welcher ein bild an den bekommenden kords zeichnen soll.
Leider scheitere ich schon am Server, es ist mein erster versuch und ich weis nicht wo der Fehler liegen könnte. Er startet schlicht weg nicht!
Ich hoffe ihr könnt mir zeigen was ich falsch gemacht habe und ewentuell auch verbessern wäre zumindest echt nett denn dann würde ich weiterkommen..

Code: [AUSKLAPPEN]
AppTitle "Server"
clients=0
bildx=300
bildy=300
port%=80
Print "Server Startet"

stream=CreateTCPServer(port)

If stream<>0 Then
Print "Server is running"
Else
Print "Netzwerkfehler!!"
EndIf

While Not KeyDown(1)
ClientStream = AcceptTCPStream(Stream)
If ClientStream Then clients=clients+1

WriteByte Stream, bildx
WriteByte Stream, bildy

Wend
CloseTCPServer stream
End


Wie gesagt mein erster versuch
 

BBPro2

BeitragSo, Apr 19, 2009 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
port 80 ist nicht frei, der wird bereits verwendet
nimm z.b. 6112 - wenn du nich grad zeitgleich warcraft 3 am laufen hast oder nen andres random programm zufällig den port nutzt sollte es laufen
niemals ports < 1000 verwenden bitte, sonst wird das nix Wink

Tankbuster

BeitragSo, Apr 19, 2009 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der Debugger gibt aus, dass bei
Zitat:

WriteByte stream,bildx
WriteByte stream,bildy


Der stream "stream" nicht existiert. Du musst mit OpenTCPStream erst einen Stream herstellen, denn du hast im mom ja nur einen Server auf Port 80 Wink


Außerdem sollte man mit WriteByte auch nur Zahlen von 0 bis 255 versenden.
Deshalb solltest du lieber WriteInt für die Koordinatenversendung benutzen.
(außerdem kommt es auf 6 Bytes mehr auch nicht an, denn ein Ethernet-Nachricht-Frame muss sowieso mindestens 64 Bytes groß sein. Also wirkt sich das nicht negativ auf die Geschwindigkeit aus Wink )
Twitter
Download Jewel Snake!
Windows|Android
 

KaDuZa

BeitragSo, Apr 19, 2009 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
also muss ich das bei den clienten machen mit readbyte oder wie soll ich denn einen stream zu den clienten herstellen?

danke für die rasche antwort der server läuft nur wie schon gesagt meint er das der stream nicht exestiert was ja auch stimmt^^
wäre froh für weitere hilfe^^



mfg Kaduza
 

BBPro2

BeitragSo, Apr 19, 2009 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir hatte mit port 80 nichmals der server gestartet
würde also wirklich empfehlen nen vernünftigen port zu wählen Wink
 

KaDuZa

BeitragSo, Apr 19, 2009 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
habe ich ja jetz getarn aber wie kann ich jetz einen stream zu dem clienten herstellen?
wäre froh wenn mir das mal einer beibringen könnte^^[/code]
 

KaDuZa

BeitragMo, Apr 20, 2009 6:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht das ihr nich denkt ich bemühe mich nicht^^ ich habe mal etwas ausprobiert aber leider kommt die gleiche fehlermeldung das der stream nicht existiert -.-

Hier der neue Code
Code: [AUSKLAPPEN]
AppTitle "Server"
clients=0
bildx=300
bildy=300
port%=6112
Print "Server Startet"

stream=CreateTCPServer(port)

If stream<>0 Then
Print "Server is running"
Else
Print "Netzwerkfehler!!"
EndIf

While Not KeyDown(1)
ClientStream = AcceptTCPStream(Stream)

If ClientStream Then
clients=clients+1
NewClientStream = ClientStream
NewClientIP$ = DottedIP(TCPStreamIP(ClientStream))
NewClientPort = TCPStreamPort(ClientStream)
OpenTCPStream(newclientip$,newclientport)
EndIf

WriteInt Stream, bildx
WriteInt Stream, bildy

Wend
CloseTCPServer stream
End


edit: Man bin ich dumm hihi writeint musste wenn schon mit in die if abfrage Razz naja danke für eue nützlichen tipps jetz gehts ans clienten schreiben und ich denke das wir uns bald wieder lesen werden ^^
wenn ichs fertig habe veröffentlich ich hier mal den code und eventuell kann man mir ja noch mal sagen wie mans besser machen kann(z.b. wie mit den writeint bin ich sehr dankbar für) ^^

Tankbuster

BeitragMo, Apr 20, 2009 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Du verstehst etwas falsch.

Zitat:
stream=CreateTCPServer(port)


CreateTCPServer gibt kein Handle eines Stream zurück, sonder erstellt nur einen Server. Um einen Stream zu öffnen, musst du OpenTCPStream benutzen.

Also sollte es heißen
Zitat:

stream=OpenTCPStream(bla,bla)
WriteInt Stream, bildx
WriteInt Stream, bildy
Twitter
Download Jewel Snake!
Windows|Android
 

KaDuZa

BeitragMo, Apr 20, 2009 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
das is ja der server ned der client also brauch der schon opentcpstream...

edit:
Das Problem habe ich grad gelöst ich habe bei beiden unterschiedliche ports angegeben Embarassed Embarassed
Allerdings kommt jetz immer bei den clienten nen illigal memory acsess....ich bin ratlos
Server


BlitzBasic: [AUSKLAPPEN]

AppTitle "Server"
clients=0
bildx=300
bildy=300
port%=6112
Print "Server Startet"

stream=CreateTCPServer(port)

If stream<>0 Then
Print "Server is running"
Else
Print "Netzwerkfehler!!"
EndIf
Repeat

ClientStream = AcceptTCPStream(Stream)

If ClientStream Then
clients=clients+1
NewClientStream = ClientStream
NewClientIP$ = DottedIP(TCPStreamIP(ClientStream))
NewClientPort = TCPStreamPort(ClientStream)
datenstream=OpenTCPStream(newclientip$,newclientport)
WriteInt datenstream, bildx
WriteInt datenstream, bildy
EndIf



Until KeyHit(1)
WaitKey
CloseTCPServer stream
Print "Der Server wurde Heruntergefahren!!!"
WaitKey
End


Der Client


BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2
AppTitle "Client"

Global bildx
Global bildy

Global IP$ = "127.0.0.1"

Global port% = 4040

Global stream%

stream=OpenTCPStream(IP$,port%)
If stream<>0 Then
Print "Verbindung Hergestellt!"
Else
Print "Netzwerkfehler!!"
Delay 3000
CloseTCPStream stream
End
EndIf
WaitKey

bild=LoadImage("bild.bmp")

DrawImage bild ,bildx,bildy

WaitKey
CloseTCPStream stream
End


Ich wäre für hilfe echt dankbar da ich so nützliche erfahrung sammeln kann.
 

KaDuZa

BeitragMo, Apr 20, 2009 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ok mittlerweile habe ich eingesehen das der server keinen stream zum clienten öffnen sollte.... seit dem läuft er auch aber wie kann der client sich jetz vom server die variabeln bildx,bildy hohlen???
ich habe es mit bildx=readint(stream) versucht aber das will nich funzen...
zumindest sind sie jetz verbunden ^^
 

coolerj

BeitragMi, Apr 22, 2009 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie mache ich über haupt oder wie bekomme ich ein Server für ein Online Spiel
MfG
coolerj

Meine Website: http://blitzbasicprojeckte.de.tl/

ozzi789

BeitragMi, Apr 22, 2009 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Da gibt es ein Tutorial!!1

nein im ernst, Server für ein Online spiel ist soo global gefragt, schau dir meinen Link an, im Grunde genommen schickst du nur Koordinaten von Spielern, Punktestände usw rum
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

KaDuZa

BeitragMi, Apr 22, 2009 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hey das is mein thread Very Happy

ich will ja nicht udp sondern tcp benutzen und mein aktuelles problem isses die koords zu schicken..

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group