Wieso bekomme ich einfach keinen Chat hin?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ReLeNtLeSS

Betreff: Wieso bekomme ich einfach keinen Chat hin?

BeitragMi, Nov 07, 2007 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Heyho,

ich ärgere mich jetz schon 2 Monate mit diesem verdammten Chat rum. Ich habe mir sämtliche Tutorials angeguggt, Beiträge hier im Forum, etc...

Aber ich bekomme das Problem einfach nicht gelöst. Daten, werden nicht an den Server gesendet, geschweige denn das er welche weiterleitet. Wieso?

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
While Not Eof(stream)
in$=ReadString$(stream)
AddTextAreaText(empfangfenster,in$)
Wend
EndIf
 
UpdateWindowMenu fenster1
UpdateWindowMenu fenster2
Forever


Und der 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
While Not Eof(stream)
in$=ReadString$(stream)
Print in$
WriteString stream,in$
Wend
EndIf
EndIf



UpdateWindowMenu fenster1
Forever


Ich bin echt ratlos.... wieso will das nicht funktionieren?[/code]
 

Dreamora

BeitragMi, Nov 07, 2007 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht würde es helfen, wenn du im Client nicht den Stream wieder überschreibst wenn serveran=1 ist. Weil damit ist der alte stream futsch, besteht jedoch noch, da du ihn nie geschlossen hast. (ich seh da sowieso nirgends wie du den Stream wieder abbaust ...)

Beim server machst du den gleichen Fehler gleich nochma. Du kannst nicht X verschiedene Streams auf nur 1 variable mappen.
Da muss ein Array her wo du die Streams drin handhabst oder Types, falls du Stream handles und Usernamen zb verknüpfen willst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ReLeNtLeSS

BeitragMi, Nov 07, 2007 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ein Chat automatisch so kompliziert wenn man das so programmieren will, wie zb ICQ läuft?
 

Dreamora

BeitragMi, Nov 07, 2007 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ICQ in seiner totalen rohform ist relativ einfach (heisst ohne file transfer und allem, nur purer textchat), der server dafür ist jedoch extrem komplex
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ReLeNtLeSS

BeitragMi, Nov 07, 2007 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
kann ich mir vorstellen, aber ich will ja auch nur ein textchat auf GUI Basis programmieren...

habe das ganze nun abgeändert, im client so:

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


und im server so:

Code: [AUSKLAPPEN]
If accept=1 Then
stream=AcceptTCPStream(host)
accept=0


Allerdings tut sich nichts... ich meine, so dürfte er doch immer wieder was neues in den Stream schrieben was der server empfängt und an alle clienten leitet oder nicht?

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group