TCP Chatprobleme

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Markus2

BeitragMi, Okt 10, 2007 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
erstmal im Server

Code: [AUSKLAPPEN]

If zustandv=1 Then
if Not Eof(stream) then
in$=ReadString$(stream)
WriteString stream,in$
endif
EndIf


im client das gleiche wegen EOF,
du solltest deine Variablen besser benennen und die überflüssigen entfernen Wink

ReLeNtLeSS

BeitragMi, Okt 10, 2007 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
danke nochmal Wink

allerdings besteht weiterhin das problem, doch jetz sagt er invalid stream handle beim EOF...

ich stelle dir mal die exes rein, schau mal, was ich meine wegen haken... das programm hakt wie sau, man kann keine knöppe betätigen und nach ner zeit kommt halt der invalid stream handle....

EXES und CODES:

http://rapidshare.com/files/61664678/ForSoChat.rar

MfG

Markus2

BeitragDo, Okt 11, 2007 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs mir angesehen und beide Prog. mal gekürzt weil ich keine GUI habe für BB .

Hängt wirklich beim verbinden und Text kommt nicht an Sad
Habe mal nen Timer benutzt der 2 mal in der Sek. die
Hauptschleife laufen läßt und dann nen Fabrwechsel über
ClsColor/Cls macht dann sieht man ganz gut wie und wann es hängt .

Evtl. Windows Firewall ?

ReLeNtLeSS

BeitragDo, Okt 11, 2007 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
d.h es müsste theoretisch funktionieren, so wie es da steht?

hmm vllt, allerdings habe ich bei mir die Windoof Firewall DEaktiviert...

Markus2

BeitragDo, Okt 11, 2007 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Finde schon,
habe heute aber keine Zeit da weiter zu gucken .

guck dir mal diesen Befehl an :TCPTimeouts read_millis,accept_millis
  • Zuletzt bearbeitet von Markus2 am Sa, Okt 13, 2007 10:46, insgesamt einmal bearbeitet

ReLeNtLeSS

BeitragDo, Okt 11, 2007 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Die TCPTimeouts bringen nichts...leider...

Also JETZT bin ich wirklich mit meinem Latein am Ende. Theoretisch müsste ALLES klappen!

Der Server scheint zu funzen! BlitzDebugger meldet jetz bei dem If Not Eof im Clienten einen Invalid Stream Handle. Warum verdammt nochmal? Confused


Zwei Wietere Hinweise:

Hab einen kleinen Sender gebaut

Code: [AUSKLAPPEN]

Repeat

stream=OpenTCPStream("83.189.125.90",4511)

WriteString stream,"Hallo!"

Print "Sende..."

Forever




damit ich die verbindung testen kann. resultat: Er sendet drei oder vier mal und danach INVALID STREAM HANDLE


Dann habe ich in den Server eingesetzt, das er mir einmal printen soll WAS er erreicht. dann sagt mir der server aber INVALID TCP STREAM HANDLE. Bei folgendem Code (Auschnitt)
Code: [AUSKLAPPEN]

          Case verbindenbutton host=CreateTCPServer(TextFieldText(port))
               If host<>0 Then
               SetStatusText(fenster1,label4$)
               serverge=1
               Else
               SetStatusText(fenster1,label5$)
               serverge=1
               EndIf
                                       
      End Select

   End Select

If serverge=1 Then
stream=AcceptTCPStream(host)
EndIf

If stream Then zustandv=1

If zustandv=1 Then
If Not Eof(stream) Then
If prufen$=ReadAvail(stream) Then
in$=ReadString$(stream)
Print in$
WriteString stream,in$
EndIf
EndIf
EndIf


MfG

/EDIT: Habe nun rausgefunden das der AcceptTCPStream im Server der schuldige sein muss. Nur was is an dem flasch?

Markus2

BeitragSa, Okt 13, 2007 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das TCPTimeouts ist wichtig .
Wie man jetzt erkennt wenn eine Verbindung abbricht,keine Ahnung .

In dem Beispiel:
Server Programm starten F1 drücken
Client Programm starten F1 drücken
Im aktiven Fenster Return drücken

Code: [AUSKLAPPEN]

AppTitle "Chat Server"
Graphics 640,480,0,2
SetBuffer BackBuffer()

TCPTimeouts 0,0

t=CreateTimer(2)

f=0

Repeat
 
 f=1-f

 ClsColor 0,f*128,0

 Cls

 If KeyHit(59)>0 And host=0 Then ;F1
   host=CreateTCPServer(1234)
 EndIf

 If host Then stream=AcceptTCPStream(host): If stream<>0 And ChatStream=0 Then ChatStream = stream

 If KeyHit(28) Then ;Return
   If ChatStream Then WriteLine ChatStream ,"Hallo "+CurrentTime()
 EndIf

 If ChatStream Then
  If Eof(ChatStream) Then
   ;CloseTCPStream ChatStream :ChatStream =0
  Else
   If ReadAvail(ChatStream) Then
    in$=in$+ReadLine(ChatStream)
    in$=Left(in$,128)
   EndIf
  EndIf
 EndIf

 Text 0,0,"Server Input:"+In$
 Text 0,16,"Host:"+host
 Text 0,32,"ChatStream:"+ChatStream

 If ChatStream Then Text 0,48,"Avail Data:"+ReadAvail(ChatStream)

 Flip

 WaitTimer t

Until KeyHit(1) ;ESCAPE

If ChatStream Then CloseTCPStream ChatStream :ChatStream =0
If host Then CloseTCPServer host:host=0
End


Code: [AUSKLAPPEN]

AppTitle "Chat Client"
Graphics 640,480,0,2
SetBuffer BackBuffer()

t=CreateTimer(2)

f=0

Repeat

 f=1-f

 ClsColor 0,f*128,0

 Cls

 If KeyHit(59)>0 And ChatStream=0 Then ;F1
   ChatStream=OpenTCPStream("127.0.0.1",1234,1234+1)
 EndIf

 If KeyHit(28) Then ;Return
   If ChatStream Then WriteLine ChatStream ,"Hallo "+CurrentTime()
 EndIf

 If ChatStream Then
  If Eof(ChatStream) Then
   ;CloseTCPStream ChatStream:ChatStream=0
  Else
   If ReadAvail(ChatStream) Then
    in$=in$+ReadLine(ChatStream)
    in$=Left(in$,128)
   EndIf
  EndIf
 EndIf

 Text 0,0,"Input:"+In$
 Text 0,16,"ChatStream:"+ChatStream

 Flip

 WaitTimer t

Until KeyHit(1) ;ESCAPE

If ChatStream Then CloseTCPStream ChatStream:ChatStream=0
End

D2006

Administrator

BeitragSa, Okt 13, 2007 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Passt jetzt zwar nicht so zum Thema, aber ich hab mich mal um deine CAPSLOCK PROBLEME im Titel gekümmert. Die sollte man da nämlich dringend vermeiden.

~Titel editiert~
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

ReLeNtLeSS

BeitragSa, Okt 13, 2007 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
AHHH VERDAMMT NOCH MAL ICH WERD BESCHEUERT!

Ich hab die TimeOuts 0,0 eingebaut. Das Programm laggt nich mehr, aber es bricht nach ein paar Sekunden mit dem verdammten

"INVALID STREAM HANDLE"

ab! Was is an dem Code den falsch? Theoretisch müsste es doch funktionieren... Sad

P.S.: Sry für den Ausraster Wink


/EDIT1: Na endlich es klappt! Allerdings kommen die Nachrichten noch nich an, ich meld mich wenn ich genaueres weis Wink

/EDIT2: Ich weis immer noch nich warum die Nachrichten nich ankommen, ich glaube jedenfalls das in den Code-Stücken hier der Wurm drinn is:

SERVER:
Code: [AUSKLAPPEN]

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()
         
          Case endebutton CloseTCPServer(host) Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End

          Case verbindenbutton host=CreateTCPServer(TextFieldText(port))
               If host<>0 Then
               SetStatusText(fenster1,label4$)
               stream=AcceptTCPStream(host)
               Else
               SetStatusText(fenster1,label5$)
               EndIf
                                       
      End Select

   End Select
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AB HIER (WURM)

If stream Then zustandv=1

If zustandv=1 Then
If prufen$=ReadAvail(stream) Then
If Not Eof(stream) Then
in$=ReadString$(stream)
WriteString stream,in$
EndIf
EndIf
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BIS HIER(DENKE ICH DAS WAS FALSCH IS)


und beim Client:

Code: [AUSKLAPPEN]

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()

          Case endebutton1 Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End
         
          Case endebutton Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End

          Case verbindenbutton ShowGadget fenster2 HideGadget fenster1
                             stream=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
                             If stream<>0 Then
                             SetStatusText(fenster2,label4$)
                             AddTextAreaText empfangfenster,"Angemeldet als: " + Name$
                             Else
                             SetStatusText(fenster2,label5$)
                             AddTextAreaText empfangfenster,"Verbindung war nicht erfolgreich!"
                             EndIf


          Case absendenbu WriteString stream,Name$ + ":" + Chr$(13)+Chr$(10) +TextFieldText(chatfenster$) + Chr$(13)+Chr$(10) + Chr$(13)+Chr$(10) AddTextAreaText(empfangfenster,Name$ + ":" + Chr$(13)+Chr$(10) +TextFieldText(chatfenster$) + Chr$(13)+Chr$(10) + Chr$(13)+Chr$(10))           

      End Select

   End Select
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;VON HIER
If serveran=1 Then
stream=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
  If stream<>0 Then
     SetStatusText(fenster2,label4$)
     Else
     SetStatusText(fenster2,label5$)
  EndIf
EndIf

If stream<>0 Then
If prufen$=ReadAvail(stream) Then
If Not Eof(stream) Then
in$=ReadString$(stream)
AddTextAreaText(empfangfenster,in$)
EndIf
EndIf
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;BIS HIER!
 

Forever


Wenn wer den Fehler endeckt, Vielen Dank!!!
Very Happy

Markus2

BeitragSo, Okt 14, 2007 10:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ReadAvail(stream) sollte wohl nach der EOF Prüfung stehen .

Und ich habe was interessantes gefunden zum EOF

...

Rückgabewert
Ab v1.52 liefert diese Funktion auch den Wert -1.

-1 = Beim Auslesen kam es zu einem Fehler (wichtig bei Internetverbindungen mit OPENTCPSTREAM)
0 = Dateiende noch nicht erreicht
1 = Dateiende erreicht

...

http://blitzbase.de/befehle2d/eof.htm

das gleiche steht auch in der Hifle zu BB wenn man F1 drückt

Eof returns 1 if eof has been reached or, in the case of a TCP stream, the stream has been 'nicely' closed.
Eof returns -1 if something has gone wrong during stream processing.

ReLeNtLeSS

BeitragSo, Okt 14, 2007 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
kk, aber die nachrichten kommen immer noch nich an Shocked

SERVER:
Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- SERVER!

TCPTimeouts 0,0

fenster1=CreateWindow("ForSo Chat Alpha1 - Hostfenster",300,300,300,300)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LABELS

label1$="ForSo Chat Alpha 1 - Server"
CreateLabel(label1$,5,5,100,15,fenster1)

label2$="Port hier eingeben:"
CreateLabel(label2$,20,30,200,20,fenster1)

label4$="----->>>>>> Host erfolgreich! <<<<<<-----"
label5$="----->>>>>> Host nicht erfolgreich! <<<<<<-----"


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TEXTAREAS

port=CreateTextField(20,50,100,20,fenster1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BUTTONS

verbindenbutton=CreateButton("Hosten!",20,150,80,20,fenster1)
endebutton=CreateButton("Ende",120,150,80,20,fenster1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SONSTIGES

zustandv=0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()
         
          Case endebutton CloseTCPServer(host) Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End

          Case verbindenbutton host=CreateTCPServer(TextFieldText(port))
               If host<>0 Then
               SetStatusText(fenster1,label4$)
               stream=AcceptTCPStream(host)
               Else
               SetStatusText(fenster1,label5$)
               EndIf
                                       
      End Select

   End Select


If stream Then zustandv=1

If zustandv=1 Then
If Eof(stream)=0 Then
If ReadAvail(stream) Then
in$=ReadString$(stream)
Print in$
WriteString stream,in$
EndIf
EndIf
EndIf

UpdateWindowMenu fenster1
Forever



CLIENT:
Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- CLIENT!

TCPTimeouts 0,0

fenster1=CreateWindow("ForSo Chat Alpha1 - Verbindungsfenster",300,300,300,300)
fenster2=CreateWindow("ForSo Chat Alpha1 - Chatfenster",600,300,400,400)

HideGadget fenster2


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LABELS

label1$="ForSo Chat Alpha 1"
CreateLabel(label1$,5,5,100,15,fenster1)
CreateLabel(label1$,5,5,100,15,fenster2)

label2$="Host-IP hier eingeben:"
CreateLabel(label2$,20,30,200,20,fenster1)

label3$="Port hier eingeben:"
CreateLabel(label3$,20,90,200,20,fenster1)

label4$="----->>>>>> Verbindung erfolgreich! <<<<<<-----"
label5$="----->>>>>> Verbindung nicht erfolgreich! <<<<<<-----"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TEXTAREAS

hostipfe$=CreateTextField(20,50,100,20,fenster1)

empfangfenster=CreateTextArea(5,20,380,200,fenster2)

chatfenster$=CreateTextField(5,250,380,150,fenster2)

chatname$=CreateTextField(20,110,100,20,fenster1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BUTTONS

verbindenbutton=CreateButton("Verbinden!",20,150,80,20,fenster1)
endebutton=CreateButton("Ende",120,150,80,20,fenster1)
endebutton1=CreateButton("Ende",90,225,80,20,fenster2)
absendenbu=CreateButton("Senden",5,225,80,20,fenster2)

schnickschnackbu$=CreateButton("SchnickSchnack Menü",175,225,200,20,fenster2)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SONSTIGES

Name$="TEST"
serveran=0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()

          Case endebutton1 Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End
         
          Case endebutton Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End

          Case verbindenbutton ShowGadget fenster2 HideGadget fenster1
                             stream=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
                             If stream<>0 Then
                             SetStatusText(fenster2,label4$)
                             AddTextAreaText empfangfenster,"Angemeldet als: " + Name$
                             Else
                             SetStatusText(fenster2,label5$)
                             AddTextAreaText empfangfenster,"Verbindung war nicht erfolgreich!"
                             EndIf


          Case absendenbu WriteString stream,Name$ + ":" + Chr$(13)+Chr$(10) +TextFieldText(chatfenster$) + Chr$(13)+Chr$(10) + Chr$(13)+Chr$(10) AddTextAreaText(empfangfenster,Name$ + ":" + Chr$(13)+Chr$(10) +TextFieldText(chatfenster$) + Chr$(13)+Chr$(10) + Chr$(13)+Chr$(10))           

      End Select

   End Select

If serveran=1 Then
stream=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
  If stream<>0 Then
     SetStatusText(fenster2,label4$)
     Else
     SetStatusText(fenster2,label5$)
  EndIf
EndIf

If stream<>0 Then
If Eof(stream)=0 Then
If ReadAvail(stream) Then
in$=ReadString$(stream)
AddTextAreaText(empfangfenster,in$)
EndIf
EndIf
EndIf
 
UpdateWindowMenu fenster1
UpdateWindowMenu fenster2
Forever


Warum nich? Eigentlich müsste es doch so sein...[/code]

Markus2

BeitragMo, Okt 15, 2007 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Das AcceptTCPStream steht nur beim Klick Ereigniss !?

ReLeNtLeSS

BeitragMo, Okt 15, 2007 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
erst sagst du, es darf nich inner schleife sein, und dann auf einmal doch? Shocked

Ich blick gar nichts mehr...

Markus2

BeitragMo, Okt 15, 2007 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe gesagt es soll in eine "Schleife"

ReLeNtLeSS hat Folgendes geschrieben:
erst sagst du, es darf nich inner schleife sein, und dann auf einmal doch? Shocked
Ich blick gar nichts mehr...


Code: [AUSKLAPPEN]

AppTitle "Chat Server"
Graphics 640,480,0,2
SetBuffer BackBuffer()

TCPTimeouts 0,0

t=CreateTimer(2)

f=0

Repeat
 
 f=1-f

 ClsColor 0,f*128,0

 Cls

 If KeyHit(59)>0 And host=0 Then ;F1
   host=CreateTCPServer(1234)
 EndIf

 If host Then stream=AcceptTCPStream(host): If stream<>0 And ChatStream=0 Then ChatStream = stream

 If KeyHit(28) Then ;Return
   If ChatStream Then WriteLine ChatStream ,"Hallo "+CurrentTime()
 EndIf

 If ChatStream Then
  Select Eof(ChatStream) ;1=Ende , -1=Fehler
  Case -1
   CloseTCPStream ChatStream :ChatStream =0
  Case 1
  Case 0
   If ReadAvail(ChatStream) Then
    in$=in$+ReadLine(ChatStream)
    in$=Left(in$,128)
   EndIf
  End Select
 EndIf

 Text 0,0,"Server Input:"+In$
 Text 0,16,"Host:"+host
 Text 0,32,"ChatStream:"+ChatStream

 Flip

 WaitTimer t

Until KeyHit(1) ;ESCAPE

If ChatStream Then CloseTCPStream ChatStream :ChatStream =0
If host Then CloseTCPServer host:host=0
End


Code: [AUSKLAPPEN]

AppTitle "Chat Client"
Graphics 640,480,0,2
SetBuffer BackBuffer()

t=CreateTimer(2)

f=0

Repeat

 f=1-f

 ClsColor 0,f*128,0

 Cls

 If KeyHit(59)>0 And ChatStream=0 Then ;F1
   ChatStream=OpenTCPStream("127.0.0.1",1234)
 EndIf

 If KeyHit(28) Then ;Return
   If ChatStream Then WriteLine ChatStream ,"Hallo "+CurrentTime()
 EndIf

 If ChatStream Then
    Select Eof(ChatStream) ;1=Ende , -1=Fehler
    Case -1
     CloseTCPStream ChatStream :ChatStream =0
    Case 1
     ;kann ja wieder was rein kommen
    Case 0
      If ReadAvail(ChatStream) Then
       in$=in$+ReadLine(ChatStream)
       in$=Left(in$,128)
      EndIf
    End Select
 EndIf

 Text 0,0,"Input:"+In$
 Text 0,16,"ChatStream:"+ChatStream

 Flip

 WaitTimer t

Until KeyHit(1) ;ESCAPE

If ChatStream Then CloseTCPStream ChatStream:ChatStream=0
End

ReLeNtLeSS

BeitragMo, Okt 15, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, als ich accepttcpstream in der schleife hatte, is das programm vorzeitig mit inavlid tcp stream handle abbgebrochen.

Jetz isses so, das es läuft.

Ich werde das allerdings nochmal in eine schleife tun und mich backmelden.

So, hab Acceptstream inner schleife:
Code: [AUSKLAPPEN]

          Case verbindenbutton host=CreateTCPServer(TextFieldText(port))
               If host<>0 Then
               SetStatusText(fenster1,label4$)
               accept=1
               Else
               SetStatusText(fenster1,label5$)
               EndIf
                                       
      End Select

   End Select

If accept=1 Then stream=AcceptTCPStream(host)

If stream Then zustandv=1

If zustandv=1 Then
If Eof(stream)=0 Then
If ReadAvail(stream) Then
in$=ReadString$(stream)
WriteString stream,in$
EndIf
EndIf
EndIf


Der Server empfängt auch nachrichten, aber nach gut 10sekunden kackt er mit der fehlermeldung "Invalid stream handle" ab...[/code]

ReLeNtLeSS

BeitragDi, Okt 16, 2007 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
MUHA!

Sooo, die Verbindung funktioniert pööörfekt!

Aaaaallerdings, empfängt der Server nur EINMAL eine nachricht von EINEM clienten, welche auch nicht weitergeleitet oder empfangen wird wird (vom andern clienten...)

CODES:

SERVER:
Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- SERVER!

TCPTimeouts 0,0

fenster1=CreateWindow("ForSo Chat Alpha1 - Hostfenster",300,300,300,300)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LABELS

label1$="ForSo Chat Alpha 1 - Server"
CreateLabel(label1$,5,5,100,15,fenster1)

label2$="Port hier eingeben:"
CreateLabel(label2$,20,30,200,20,fenster1)

label4$="----->>>>>> Host erfolgreich! <<<<<<-----"
label5$="----->>>>>> Host nicht erfolgreich! <<<<<<-----"


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TEXTAREAS

port=CreateTextField(20,50,100,20,fenster1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BUTTONS

verbindenbutton=CreateButton("Hosten!",20,150,80,20,fenster1)
endebutton=CreateButton("Ende",120,150,80,20,fenster1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SONSTIGES

zustandv=0
accept=0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()
         
          Case endebutton CloseTCPServer(host) Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End

          Case verbindenbutton host=CreateTCPServer(TextFieldText(port))
               If host<>0 Then
               SetStatusText(fenster1,label4$)
               accept=1
               Else
               SetStatusText(fenster1,label5$)
               EndIf
                                       
      End Select

   End Select

If accept=1 Then
stream=AcceptTCPStream(host)

If stream Then
If Eof(stream)=0 Then
If ReadAvail(stream) Then
in$=ReadString$(stream)
Print in$
WriteString stream,in$
EndIf
EndIf
EndIf

Else
Print "Test, dafür das nix im Stream ist."
EndIf


UpdateWindowMenu fenster1
Forever



CLIENT:
Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- CLIENT!

TCPTimeouts 0,0

fenster1=CreateWindow("ForSo Chat Alpha1 - Verbindungsfenster",300,300,300,300)
fenster2=CreateWindow("ForSo Chat Alpha1 - Chatfenster",600,300,400,400)

HideGadget fenster2


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LABELS

label1$="ForSo Chat Alpha 1"
CreateLabel(label1$,5,5,100,15,fenster1)
CreateLabel(label1$,5,5,100,15,fenster2)

label2$="Host-IP hier eingeben:"
CreateLabel(label2$,20,30,200,20,fenster1)

label3$="Port hier eingeben:"
CreateLabel(label3$,20,90,200,20,fenster1)

label4$="----->>>>>> Verbindung erfolgreich! <<<<<<-----"
label5$="----->>>>>> Verbindung nicht erfolgreich! <<<<<<-----"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TEXTAREAS

hostipfe$=CreateTextField(20,50,100,20,fenster1)

empfangfenster=CreateTextArea(5,20,380,200,fenster2)

chatfenster$=CreateTextField(5,250,380,150,fenster2)

chatname$=CreateTextField(20,110,100,20,fenster1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BUTTONS

verbindenbutton=CreateButton("Verbinden!",20,150,80,20,fenster1)
endebutton=CreateButton("Ende",120,150,80,20,fenster1)
endebutton1=CreateButton("Ende",90,225,80,20,fenster2)
absendenbu=CreateButton("Senden",5,225,80,20,fenster2)

schnickschnackbu$=CreateButton("SchnickSchnack Menü",175,225,200,20,fenster2)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SONSTIGES

Name$="TEST"
serveran=0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()

          Case endebutton1 Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End
         
          Case endebutton Notify "ForSo Chat V.0.1 Alpha - by ReLeNtLeSS and Das_TimmaeH!" End

          Case verbindenbutton ShowGadget fenster2 HideGadget fenster1
                             stream=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
                             If stream<>0 Then
                             SetStatusText(fenster2,label4$)
                             AddTextAreaText empfangfenster,"Angemeldet als: " + Name$
                             Else
                             SetStatusText(fenster2,label5$)
                             AddTextAreaText empfangfenster,"Verbindung war nicht erfolgreich!"
                             EndIf


          Case absendenbu WriteString stream,Name$ + ":" + Chr$(13)+Chr$(10) +TextFieldText(chatfenster$) + Chr$(13)+Chr$(10) + Chr$(13)+Chr$(10) AddTextAreaText(empfangfenster,Name$ + ":" + Chr$(13)+Chr$(10) +TextFieldText(chatfenster$) + Chr$(13)+Chr$(10) + Chr$(13)+Chr$(10))           

      End Select

   End Select

If serveran=1 Then
stream=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
  If stream<>0 Then
     SetStatusText(fenster2,label4$)
     Else
     SetStatusText(fenster2,label5$)
  EndIf
EndIf

If stream<>0 Then
If Eof(stream)=0 Then
If ReadAvail(stream) Then
in$=ReadString$(stream)
AddTextAreaText(empfangfenster,in$)
EndIf
EndIf
EndIf
 
UpdateWindowMenu fenster1
UpdateWindowMenu fenster2
Forever




Theorethisch müsste es funzen...

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group