kleiner Chat mit TCP

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nikla3D

Betreff: kleiner Chat mit TCP

BeitragSa, Feb 13, 2010 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich will einen kleinen Chat programmieren.
Um ihn erstmal auszuprobieren, will ich erstmal an meinen Computer an mich selbst schicken:
Code: [AUSKLAPPEN]
Local host=CreateTCPServer(1680),stream
Repeat
  stream=AcceptTCPStream(host)
      Eingabe$=Input$()
      Goto Schleife
  If stream <> 0 Then
   .Schleife
    WriteLine(stream,Eingabe$)
    CloseTCPStream(stream)
    WaitKey
    End
  EndIf
Until KeyDown(1) = 1



Ich weiß, Goto ist bösen, aber anders bekomme ich es nicht hin.
Ich will einfach nur eine Eingabe starten. Der Text der geschrieben worden ist soll dann einfach an mein anderes Programm geschickt werden.
WAS ist FALSCH?

Pummelie

BeitragSa, Feb 13, 2010 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, du scheinst TCP nicht verstanden zu haben,
AcceptTCPStream gibt das Streamhandel zurück, an das man senden kann.
Du überspringst die prüfung, ob eine Verbindung hergestellt wurde, und sendest einfach.

Es müsste so aussehen:
BlitzBasic: [AUSKLAPPEN]
Local host=CreateTCPServer(1680),stream,eingabe$
Repeat
stream=AcceptTCPStream(host)
If stream <> 0 Then
eingabe=Input$("Was soll ich senden: ")
WriteLine(stream,eingabe)
CloseTCPStream(stream)
WaitKey
End
EndIf
Until KeyDown(1) = 1
It's done when it's done.
 

Nikla3D

BeitragSa, Feb 13, 2010 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh Mann, ich bin zu blöd!!!

Naja, wenn ich jetzt deinen Sende Programm nehme.
Und hier mein Empfangsprogramm:
Code: [AUSKLAPPEN]
Local stream=OpenTCPStream("127.0.0.1",1680)

Print(ReadLine$(stream))
WaitKey

End


Dann weiß ich nicht warum er das Geschriebene dann nicht ausprintet

EDIT:
Mein kleiner Chat sieht jetzt so aus!
Code: [AUSKLAPPEN]
Local host = CreateTCPServer(1680),stream,eingabe$
Local TCP = OpenTCPStream("127.0.0.1",1680)
Repeat
  stream = AcceptTCPStream(host)
  If stream <> 0 Then
    eingabe = Input$("Was soll ich senden: ")
    WriteLine(stream,eingabe)
   Print(ReadLine$(TCP))
    CloseTCPStream(stream)
    WaitKey
    End
  EndIf
Until KeyDown(1) = 1


Wenn ich jetzt das Programm zweimal öffne, müsste ich wenn ich auf der einen Seite etwas schreibe, auf der anderen Seite etwas zu lesen bekommen---Klappt aber nicht----

Kann dies sein weil beide Programme auf den gleichen Port zugreifen und therotisch beide diesen Port beutzen

Pummelie

BeitragSa, Feb 13, 2010 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der Port muss gleich sein Wink .
Ich schreib dir mal kurtz ein kleinen TCP Chat, damit du siehst wie es im Netz so zu statten geht.

Senden:
BlitzBasic: [AUSKLAPPEN]
Local host=CreateTCPServer(1680) ;Server öffnen
Local stream,massage$="Code" ;Variablen setzen
Repeat ;Schleife um auf Verbindung zu warten
stream=AcceptTCPStream(host) ;Verbindung annehmen
Select stream
Case 0
Default ;wenn Verbindung hergestellt
DebugLog("Verbindung hergestellt!")
Exit ;schleife verlassen
End Select
Forever
WriteLine(stream,massage) ;Nachricht senden
DebugLog("Nachricht versendet")
CloseTCPStream(stream) ;Verbindung schließen
End ;beenden


Empfangen:
BlitzBasic: [AUSKLAPPEN]
Graphics(640,480,16,2) ;grafik
SetBuffer(BackBuffer()) ;grafik
Local stream=OpenTCPStream("127.0.0.1",1680) ;verbindung öffnen
Local massage$
Repeat ;Empfangsschleife
massage=ReadLine$(stream) ;empfangen
Select massage$
Case 0
Case ""
Default ;wenn nachricht eingetroffen
Text(0,0,massage$) ;nachricht malen
Flip
WaitKey
End
End Select
Forever
It's done when it's done.
 

Nikla3D

BeitragSa, Feb 13, 2010 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Sobald ich das 2 Programm öffne schließt er das Erste Crying or Very sad

Pummelie

BeitragSa, Feb 13, 2010 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Und das 2. zeigt was an nicht war?

Das Programm ist nur auf das versenden von einer Variable gebaut.
Es sollte dir nur zeigen wie das funktioniert.
It's done when it's done.
 

Nikla3D

BeitragSa, Feb 13, 2010 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Pummelie hat Folgendes geschrieben:
Und das 2. zeigt was an nicht war?

Das Programm ist nur auf das versenden von einer Variable gebaut.
Es sollte dir nur zeigen wie das funktioniert.


Nein es zeigt leider nichts an!

EDIT:
Funz, mir ist nur was beim Kopieren schiefgegangen!
Vielen Dank

EDIT: Dass soll jetzt mein Programm sein was Nachrichten senden und empfangen kann.
1. Frage ist da dran was falsch?
Code: [AUSKLAPPEN]
Local host=CreateTCPServer(1680)
Local stream,massage$=Eingabe$
   Local TCP=OpenTCPStream("127.0.0.1",1680)
   Local msg$

Repeat
   Eingabe$ =Input("Your message:")
   stream=AcceptTCPStream(host)
      massage=ReadLine$(stream)
      Select massage$
         Case 0
         Case ""
         Default
            Text(0,0,massage$)
         WaitKey
      End Select
   
   Select stream
      Case 0
      Default
         DebugLog("Verbindung hergestellt!")
         Exit
   End Select
Forever
WriteLine(stream,massage)
DebugLog("Nachricht versendet")
CloseTCPStream(stream)
WaitKey
End

Pummelie

BeitragSa, Feb 13, 2010 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Du wartest wieder nicht, bis eine Verbindung hergestellt wurde.
du musst acceptcpstream in einer seperaten Schleife ausführen, bis eine Verbindung hergestellt ist.
Außerdem musst du nach dem Text Befehl flip verwenden, damit etwas angezeigt wird.
Und natürlih am Anfang:
BlitzBasic: [AUSKLAPPEN]
Graphics(640,480,16,2)
SetBuffer(BackBuffer())
It's done when it's done.

BB-Freak

Betreff: Frage

BeitragSo, Apr 04, 2010 3:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm Kurze Frage darf ich teile aus euren Vorwschlägen kopieren???
Und wie mach ich da Smilys rein??

Pummelie

BeitragSo, Apr 04, 2010 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist mir Recht, wenn du was kopierst, aber was meinst du mit Smilys?
Hier im Forum, oder bei dieser übertragung?

Noch etwas, bitte diese alten Therads nicht ausbuddeln, ist wie Leichenschändung Wink
Lieber einen neuen machen, der auf den alten verweist.

Edit: Wenn du auf meinen code aufbaust, wäre es nett, wenn du auf mich verweist.
It's done when it's done.

ToeB

BeitragSo, Apr 04, 2010 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
@BB-Freak : villeicht solltest du schonmal wissen, das das kein komletter chat ist.. so wie icq ... sondern nur ein versenden von NAchrichten. Wenn du smileys reinmachen willst, musst du einiges mehr können als code kopieren und einfügen.... Du brauchst eine vernüftige Textausgabe-routine, in die kannst du dann die smileys mit einbinden (guck dir string befehle an wie Mid, Instr, Left, Right und lower bzw. Upper.
Viel glück.

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group