TCP Befehle... SERVER & Client

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: TCP Befehle... SERVER & Client

BeitragDi, Jul 19, 2005 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe mir folgendes mal angesehen:

also diese beispiele mit tcp!


mhh wie soll ich mich ausdrücken....
ok

erst mal den code

Server:
Code: [AUSKLAPPEN]

svrGame=CreateTCPServer(6832)
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
      End
   Else
      Print "Keine Daten mehr..."
      Delay 1000
   End If
Wend
CloseTCPServer svrGame
End


Client:

Code: [AUSKLAPPEN]

strmGame=OpenTCPStream("pureos.ath.cx",6832)
If strmGame<>0 Then
   Print "Client erfolgreich verbunden"
Else
   Print "Konnte keine Verbindung herstellen"
   WaitKey
   End
End If
WriteString strmGame,"hhhh"
Print "Daten gesendet..."
CloseTCPStream strmGame
End


also diese beispiele funktionieren nur wie kann ich vom server aus eine naricht (STRING$)zurückübermitteln am client ?

ich danke für jeden beitrag

mfg mathias kwiatkowski

DA

BeitragDi, Jul 19, 2005 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

Das ist eigentlich ganz einfach.
Du musst nur gucken ob strStream nicht 0 ist.
Wenn nämlich strStream nicht 0 ist, dann ist ein neuer User auf dem Server.
Jetzt brauchst du nur noch den Stream auslesen.
Denn dort ist die ID des Clients.
Und wenn du ne Nachricht an den Clienten schreiben willst, nimmste einfach die ID die du z.B. in einem Type gespeichert hast.

Wenn dir das nicht reicht kannst ja mal hier gucken: https://www.blitzforum.de/viewtopic.php?t=9658
Zwar nen bischen unübersichtlich, müsste aber trodzdem lesbar sein... Wink

Mfg
Deutscher Blitz Basic Chat
 

Beaner

BeitragDi, Jul 19, 2005 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn ich dich jetzt richtig verstanden hab willst du vom Server aus eine Naricht an den Client zurücksenden, oder?

Dann mußt du halt beim Server noch nen WriteString reinpacken und beim Client nen ReadString

Mathias-Kwiatkowski

BeitragDi, Jul 19, 2005 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
so danke nochmal an euch allen! aber kann man es mir bitte anhand meiner codes zeigen, so kann ich am besten lernen!!!

wenn es möglich ist danke schöhn!
 

Beaner

BeitragDi, Jul 19, 2005 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut also noch einmal langsam. Da du den Code anscheinend noch nicht ganz verstehst hier noch einmal der Beispiel Code mit Kommentaren

Server:
BlitzBasic: [AUSKLAPPEN]

svrGame=CreateTCPServer(6832) ;der Server wird gestartet
If svrGame<>0 Then ;wenn erfolgreich gestartet wird ein Stream Handle
;z.B. 17823688 zurückgegeben

Print \"Server erfolgreich gestartet\"
Else
Print \"Server konnte nicht gestartet werden\" ;wenn kein Stream
;(svrGame = 0) dann Programm beenden
End
End If
While Not KeyHit(1) ;Hauptschleife Anfang
strStream=AcceptTCPStream(svrGame) ;akzept. eingehenden Stream
If strStream Then ;wenn die Verbindung steht dann
Print ReadString$(strStream) ;lies alle Strings die gesendet werden
Delay 2000 ;mach 2 Sekunden \"Pause\"
End ;beende das Programm
Else ;wenn die Verbindung nicht besteht dann
Print \"Keine Daten mehr...\"
Delay 1000
End If
Wend ;Hauptschleife Ende
CloseTCPServer svrGame ;beende Server
End


Client:
BlitzBasic: [AUSKLAPPEN]

strmGame=OpenTCPStream(\"pureos.ath.cx\",6832) ;baue Verbindung
;zum Server auf
If strmGame<>0 Then ;wenn mit Server verbunden
Print \"Client erfolgreich verbunden\"
Else
Print \"Konnte keine Verbindung herstellen\"
WaitKey
End
End If
WriteString strmGame,\"hhhh\" ;schreibe String in den Stream
Print \"Daten gesendet...\"
CloseTCPStream strmGame
End


So wie du sehen kannst wird mit WriteString die Nachricht gesendet und mit ReadString die Nachricht ausgelesen. Also mußt du damit der Client auch Daten empfangen kann die entsprechende Zeile einfügen in dem Fall also na was wohl? Richtig Print ReadString$(strStream) beim Server dann entsprechend noch ein WriteString.
Natürlich mußt du beide Programme noch etwas modifizieren. Beim Server muß das End raus damit das Programm nicht immer sofort geschlossen wird und beim Client mußt du nach erfolgreichem Verbindungsaufbau noch eine Hauptschleife reinsetzen (repeat ... until keyhit(1)) damit nicht nach einmaligem Versenden das Programm beendet wird.

*Edit
Die [ If"> ] Dinger müssen natürlich raus. Kann sie komischerweise nicht rauseditieren

Mathias-Kwiatkowski

BeitragSa, Jul 23, 2005 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich habe nun meine programme etwas umgebaut um es zu testen aber ich habe es wohl nicht geschafft kann mir jemand sagen woran es liegt?

Server
BlitzBasic: [AUSKLAPPEN]

svrGame=CreateTCPServer(6832)
If svrGame<>0 Then
Print \"Server erfolgreich gestartet\"
Else
Print \"Server konnte nicht gestartet werden\"
End
End If

Dim UserID(99999)





Repeat
strStream=AcceptTCPStream(svrGame)

If strStream<>0 Then
UserID(1)=strStream
Print ReadString$(strStream)
Print userid(1)
WriteString(userid(1),\"jjl\")
End If
Forever

CloseTCPServer svrGame


Client:
BlitzBasic: [AUSKLAPPEN]

strmGame=OpenTCPStream(\"pureos.ath.cx\",6832)
If strmGame<>0 Then
Print \"Client erfolgreich verbunden\"
Else
Print \"Konnte keine Verbindung herstellen\"
WaitKey
End
End If
WriteString strmGame,\"hhhh\"
Print \"Daten gesendet...\"


Repeat

strStream=AcceptTCPStream(svrGame)

If strStream<>0 Then
Print ReadString$(strStream)
End
EndIf
Forever

CloseTCPStream strmGame




ich danke für jede hilfe die anhand meiner quelltexte gemacht werden
mit etwas anderem kann ich glaub ich sehr wenig anfangen... da ich auf dem gebiet echter neuling bin


danke euch @oll[/code]
 

Castrapolis

BeitragMo, Jul 25, 2005 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast in deinem Code UserID machmal groß aber manchmal auch
klein geschrieben. Idea

Zitat:
Code: [AUSKLAPPEN]
Dim UserID(99999)

Code: [AUSKLAPPEN]
WriteString(userid(1),"jjl")


Vieleicht klappt es so:
server:

BlitzBasic: [AUSKLAPPEN]
svrGame=CreateTCPServer(6832) 
If svrGame<>0 Then
Print \"Server erfolgreich gestartet\"
Else
Print \"Server konnte nicht gestartet werden\"
End
End If

Dim UserID(99999)





Repeat
strStream=AcceptTCPStream(svrGame)

If strStream<>0 Then
UserID(1)=strStream
Print ReadString$(strStream)
Print uUserID(1)
WriteString(UserID(1),\"jjl\")
End If
Forever

CloseTCPServer svrGame

Artemis

BeitragMo, Jul 25, 2005 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein!

BlitzBasic ist nicht Case-Sensitiv, dass heißt, dass alle Funktionen und Variablen-Namen von der Groß/kleinschreibung so geschrieben werden dürfen wie man will.

Jolinah

BeitragMo, Jul 25, 2005 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube der Fehler liegt beim Client. AcceptTCPStream muss nur der Server machen um neue Clients zu akzeptieren. Der Client ist schon verbunden. Versuch mal nach Print "Daten gesendet..." noch ein Print ReadString(strmGame) einzubauen. Und dann lass die Repeat Schleife beim Client weg Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group