TCP Chatprobleme

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

ReLeNtLeSS

Betreff: TCP Chatprobleme

BeitragMo, Okt 08, 2007 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
HeyHo,
das ich schonmal was zu diesem Thema fragte, mir aber die Antworten nich so fiel geholfen haben, ich schon wieder ein wenig rumgebastelt hab etc.. etc.. fang ich hier nochmal neu an.

Also:

Bei meinem Chat habe ich einen Server, der einen TCPServer öffnet, und auf den Server connecten die Clienten und die Nachrichten laufen über den Server.

Allerdings weis ich schon bei Server nicht, ob der überhaupt richtig "initialiesiert".

Der Client bekommt auch keine Verbindung, "Invalid TCP Stream Handle".

Nun zu meine Codes; ich HOFFE ihr köönt mir helfen!! Very Happy

DER SERVER:
Code: [AUSKLAPPEN]

; SERVER!

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



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

Repeat

  Select WaitEvent()

      Case $401

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

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

   End Select

Forever

UpdateWindowMenu fenster1


DER CLIENT:
Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- CLIENT!

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"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()

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

          Case verbindenbutton ShowGadget fenster2 join=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
               If join<>0 Then
                 SetStatusText(fenster2,label4$)
                 Else
                 SetStatusText(fenster2,label5$)
               EndIf
               stream=AcceptTCPStream(host)
               If stream=0 Then Print "Fail to Accept Stream"
               AddTextAreaText empfangsfenster,"Angemeldet als: " + Name$

          Case absendenbu WriteString stream,Name$ + ":" + Chr$(13)+Chr$(10) +TextFieldText(chatfenster$) + Chr$(13)+Chr$(10) + Chr$(13)+Chr$(10)
             
 in$=ReadString$(stream)
          AddTextAreaText(empfangsfenster,in$)           

      End Select

   End Select

Forever

UpdateWindowMenu fenster1
UpdateWindowMenu fenster2


MfG
  • Zuletzt bearbeitet von ReLeNtLeSS am Fr, Okt 12, 2007 22:25, insgesamt 2-mal bearbeitet

ReLeNtLeSS

BeitragDi, Okt 09, 2007 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann mir denn echt keiner helfen?

Sorry für das bisschen Ungeduld, aber ich sitz da jetz schon fast ne Woche drann....
 

BIG BUG

BeitragDi, Okt 09, 2007 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist, dass Du nur direkt nach dem initialisieren auch AcceptTCPStream aufrufst.
Dieser Befehl muss jedoch in einer Schleife aufgerufen werden, solange auf neue Clients gewartet wird, denn nur dann können diese verbinden.

CreateTCPServer erstellt nur einen sog. Listening-Socket, der ausschließlich dazu dient, ankommende Verbindungsanfragen anzunehmen.
Mit AcceptTCPStream wird dann erst geprüft, ob einen solche Verbindungsanfrage vorliegt und die Verbindung auf einem weiteren Socket aufgebaut.

Die zeitliche Reihenfolge des Ablaufs sieht also so aus:

Server: CreateTCPServer
Client: OpenTCPStream
Server: AcceptTCPStream

Da OpenTCPStream einen TimeOut hat, muss das Annehmen der Clients kontinuierlich erfolgen, sonst gibt der Client wieder auf und Du erhältst Deine Fehlermeldung.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Markus2

BeitragDi, Okt 09, 2007 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du eine Verbindung nur beim Mausklick zu läßt wird das nix Wink

ReLeNtLeSS

BeitragDi, Okt 09, 2007 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich bin jetz schon wesentlich weiter, das programm läuft, allerdings weis ich NICHT warum die nachrichten nicht ankommen!

BEIM SERVER:
Code: [AUSKLAPPEN]

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

Repeat

  Select WaitEvent()

      Case $401

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

          Case verbindenbutton host=CreateTCPServer(TextFieldText(port))  ;den server machen
               If host<>0 Then
                 SetStatusText(fenster1,label4$)   ; nachricht ob host erfolgreich
                 Else
                 SetStatusText(fenster1,label5$)
               EndIf
               stream=AcceptTCPStream(host)          ;strean finden
               If stream Then zustandv=1                   ; zustand is zuvor zustandv=0
               
             
                                       
      End Select

   End Select

If zustandv=1 Then               ;Hier soll er die ganze Zeit, alles was reinkommt lesen und wieder                                                                             ;                                              reinschreiben, was er aber nicht tut....
in$=ReadString$(host)
WriteString in$,host
EndIf
Forever



DER CLIENT:




Code: [AUSKLAPPEN]

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()

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

          Case verbindenbutton ShowGadget fenster2 join=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))  ; Der Stream wird geöffnet
               If join<>0 Then
                 SetStatusText(fenster2,label4$)                     ; Hats geklappt?
                 Else
                 SetStatusText(fenster2,label5$)
               EndIf
               AddTextAreaText empfangfenster,"Angemeldet als: " + Name$
               zustand=1                  ; Zustand war vorher zustand=0

          Case absendenbu WriteString join,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))    ;Was er absendet und ins Chatfenster schreibt       

      End Select

   End Select

If zustand=1 Then                     ;Hier soll er die ganze Zeit lesen, was er anscheinend nich tut...
in$=ReadString$(join)
AddTextAreaText(empfangfenster,in$)
EndIf
 


Forever



Danke für Hilfe Wink

Markus2

BeitragDi, Okt 09, 2007 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal

Simulation :
Server starten
Click auf verbinden und CreateTCPServer

Schleife>
warten wer sich verbindet mit AcceptTCPStream und Stream merken
wenn Verbindung Stream<>0 dann Daten lesen
<Schleife

Bei Waitevent mußte zusehen das auch eins erzeugt wird sonnst steht dein Programm still .
Könntest nen Timer dazu nehmen der x mal in der Sekunde was auslößt .

Code: [AUSKLAPPEN]

Select EventSource()
Case verbindenbutton
 host=CreateTCPServer(TextFieldText(port))  ;den server machen
               If host<>0 Then
                 SetStatusText(fenster1,label4$)   ; nachricht ob host erfolgreich
                 Else
                 SetStatusText(fenster1,label5$)
               EndIf
End Select



Code: [AUSKLAPPEN]

               stream=AcceptTCPStream(host)          ;strean finden

ReLeNtLeSS

BeitragDi, Okt 09, 2007 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
jojo die abfolge verstehe ich ja; allerdings habe ich nirgends ein Beispiel gefunden, was mir folgendes erklärt:

Der Server liest immer un immer wieder den Stream und kopiert alles auch wieder hinein, damit es bei jedem Clienten ankommt.

Die Clienten lesen immer un immer wieder den Stream und kopieren alles in das Empfangtextarea. Gleichzeitig kopieren sie auch alles, was geschrieben wird in den Stream.

Das Prinzip, also wie das Netzwerk FUnktioniert, weis ich, aber nicht, wie ich es konkret auf diesen Chat anwende! Confused

Markus2

BeitragDi, Okt 09, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
stream=AcceptTCPStream(host)

das ist eine Verbindung
wenn du diese Variable immer überschreibst haste auch nur eine Verbindung
wo du antworten kannst .

Mußte also sammeln
streamneu=AcceptTCPStream(host)
if streamneu<>0 then streamindex=streamindex+1:stream(streamindex)=streamneu

for i=1 to streamindex
writestring stream(i),"Echo" <- da steht dann das drin was rein gekommen ist
next

ReLeNtLeSS

BeitragDi, Okt 09, 2007 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Markus2 hat Folgendes geschrieben:
stream=AcceptTCPStream(host)

das ist eine Verbindung
wenn du diese Variable immer überschreibst haste auch nur eine Verbindung
wo du antworten kannst .

Mußte also sammeln
streamneu=AcceptTCPStream(host)
if streamneu<>0 then streamindex=streamindex+1:stream(streamindex)=streamneu

for i=1 to streamindex
writestring stream(i),"Echo" <- da steht dann das drin was rein gekommen ist
next


äähm... sorry aber..... WasWieWoWer? Ich muss mehrere AcceptTCPStreams haben? Wieso das denn? der server braucht doch nur einmal wissen das da ne verbindung is oder nich?
 

BIG BUG

BeitragDi, Okt 09, 2007 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte lies Dir doch meinen obigen Post durch und versuche es zu verstehen. Solange Du besagte Änderung nicht durchführst wird Dein Programm auch nicht funktionieren...
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

ReLeNtLeSS

BeitragMi, Okt 10, 2007 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
BIG BUG hat Folgendes geschrieben:
Das Problem ist, dass Du nur direkt nach dem initialisieren auch AcceptTCPStream aufrufst.
Dieser Befehl muss jedoch in einer Schleife aufgerufen werden, solange auf neue Clients gewartet wird, denn nur dann können diese verbinden.

CreateTCPServer erstellt nur einen sog. Listening-Socket, der ausschließlich dazu dient, ankommende Verbindungsanfragen anzunehmen.
Mit AcceptTCPStream wird dann erst geprüft, ob einen solche Verbindungsanfrage vorliegt und die Verbindung auf einem weiteren Socket aufgebaut.

Die zeitliche Reihenfolge des Ablaufs sieht also so aus:

Server: CreateTCPServer
Client: OpenTCPStream
Server: AcceptTCPStream

Da OpenTCPStream einen TimeOut hat, muss das Annehmen der Clients kontinuierlich erfolgen, sonst gibt der Client wieder auf und Du erhältst Deine Fehlermeldung.


Alles klar, okay, aber wie tu ich das inne schleife das er auf tastendruck anfaängt? geht ZB.:

repeat
select ... usw
case verbindenbutton
repeat
create und accept stream
forever
forever

Geht sowas?

ReLeNtLeSS

BeitragMi, Okt 10, 2007 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
AAAALSO

ich hab jetz die streams in die schleife gepackt..... allerdings hakt das programm übel und nachner weile kommt "Invalid TCP Stream".... ich weis nich wieso.... kann mir wer helfen?

SERVER:
Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- SERVER!

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
serverge=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

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

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

   End Select

If serverge=1 Then
stream=AcceptTCPStream(host)
If stream Then zustandv=1
If zustandv=1 Then
in$=ReadString$(host)
WriteString in$,host
EndIf
EndIf

Forever

UpdateWindowMenu fenster1


CLIENT:

Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- CLIENT!

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"
zustand=0
serveran=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()

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

          Case verbindenbutton ShowGadget fenster2 serveran=1 AddTextAreaText empfangfenster,"Angemeldet als: " + Name$

          Case absendenbu WriteString join,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
join=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
  If join<>0 Then
     SetStatusText(fenster2,label4$)
     Else
     SetStatusText(fenster2,label5$)
  EndIf
zustand=1
EndIf

If zustand=1 Then
in$=ReadString$(join)
AddTextAreaText(empfangfenster,in$)
EndIf
 


Forever

UpdateWindowMenu fenster1
UpdateWindowMenu fenster2



Nochmals Danke![/code]

Markus2

BeitragMi, Okt 10, 2007 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Häh ?

in$=ReadString$(host) <- warum host statt stream ?
WriteString in$,host

und vorm lesen solltest du gucken ob daten im empfangspuffer bzw. stream sind .

beenden solltet du übrigens besser so machen
if host<>0 then
CloseTCPServer host
host=0
endif

beim verbinden so
if host<>0 then ... abmelden
if host=0 then
host=CreateTCPServer(TextFieldText(port))
endif

ReLeNtLeSS

BeitragMi, Okt 10, 2007 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Markus2 hat Folgendes geschrieben:
Häh ?

in$=ReadString$(host) <- warum host statt stream ?
WriteString in$,host



weil

host=createtcpserver

und

host=acceptcpstream

... oder muss da immer stream hin???

Markus2

BeitragMi, Okt 10, 2007 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Parameter stimmt nicht drück mal F1 über ReadString
Code: [AUSKLAPPEN]

If serverge=1 Then
stream=AcceptTCPStream(host)
If stream Then zustandv=1
If zustandv=1 Then
in$=ReadString$(host)
WriteString in$,host
EndIf
EndIf

ReLeNtLeSS

BeitragMi, Okt 10, 2007 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch der Parameter Stimmt! Laut OH:

"Parameter
Stream = Dateiidentität, die mit OPENFILE/READFILE ermittelt wurde



Rückgabewert
Ein String mit unterschiedlich vielen Zeichen.



Beispiel
Dieses Programm speichert den Text "Hallo" in eine Datei. Danach wird es wieder ausgelesen und ausgegeben:

fileout = WRITEFILE("mydata.dat")
WRITESTRING fileout,"Hallo"
CLOSEFILE fileout
filein = READFILE("mydata.dat")
Wert$ = READSTRING$(filein)
CLOSEFILE filein
PRINT Wert$
"

Also, stream=AcceptTCPStream(host), also ReadString$(host).... Oder was meinst du?

Markus2

BeitragMi, Okt 10, 2007 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ReadString$(host)

ist nicht

ReadString$(stream)

ReLeNtLeSS

BeitragMi, Okt 10, 2007 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ne seh ich auch

aber es muss doch trtzdem funzen, weil:

Wert$ = READSTRING$(filein)

dann müsste doch das auch nich gehen?


/EDIT: SORRY, ich weis jetz was du meinst >.< ich werds gleich verbessern^^

/EDIT2: Beide Haken immernoch und brechen nach einigen Minuten mit "invalid stream handle" ab Sad

Markus2

BeitragMi, Okt 10, 2007 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm,
dann zeige uns erstmal den Stand der Dinge Wink

ReLeNtLeSS

BeitragMi, Okt 10, 2007 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für deine Geduld Wink

ALso, SERVER:

Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- SERVER!

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
serverge=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

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

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

   End Select

If serverge=1 Then
stream=AcceptTCPStream(host)
If stream Then zustandv=1
If zustandv=1 Then
in$=ReadString$(stream)
WriteString stream,in$
EndIf
EndIf

Forever

UpdateWindowMenu fenster1


BlitzDebugger mekkert beim Starten und Hosten NICHT.

CLIENT:
Code: [AUSKLAPPEN]

; APLHA NR 1 DES FORSOCHATS -- CLIENT!

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"
zustand=0
serveran=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EREIGNISSE

Repeat

  Select WaitEvent()

      Case $401

      Select EventSource()

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

          Case verbindenbutton ShowGadget fenster2 serveran=1 AddTextAreaText empfangfenster,"Angemeldet als: " + Name$

          Case absendenbu WriteString join,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
join=OpenTCPStream(TextFieldText(hostipfe$),TextFieldText(chatname$))
  If join<>0 Then
     SetStatusText(fenster2,label4$)
     Else
     SetStatusText(fenster2,label5$)
  EndIf
zustand=1
EndIf

If zustand=1 Then
in$=ReadString$(join)                                     ; Hier meckert BlitzDebugger "Invalid Stream Handle". WARUM
AddTextAreaText(empfangfenster,in$)
EndIf
 


Forever

UpdateWindowMenu fenster1
UpdateWindowMenu fenster2


Hab die problem stelle LAUT BLITZDEBUGGER makiert Wink

und danke nochmal!

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group