Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Sauer-RAM »

Hi,
Ich hab diesen kleinen Chat zusammenprogrammiert, aber jetzt will er nicht und ich hab keine Ahnung warum das nicht geht. Ich werd noch irre. Ich hoffe ihr schaut euch mal den Code an und könnt mir sagen warum er keine Lust hat.

Server:

Code: Alles auswählen

Enumeration
  #Chat
EndEnumeration

Enumeration
  #Chat
  #Text
  #Senden
  #Listview_1
  #Editor_1
  #Button_6
  #Button_7
EndEnumeration


Procedure Open_Chat()
  If OpenWindow(#Chat, 240, 27, 538, 363, "Chatserver",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ListViewGadget(#Listview_1, 10, 10, 520, 240)
      EditorGadget(#Editor_1, 10, 260, 360, 90)
      ButtonGadget(#Button_6, 380, 260, 150, 40, "Senden")
      ButtonGadget(#Button_7, 380, 310, 150, 40, "Einstellungen")
  EndIf
EndProcedure

Procedure Schreibe(text.s)
If AddGadgetItem(#Listview_1,0,text)
Else
  MessageRequester("ERROR","Kann keinen neuen Eintrag erstellen.")
  End
EndIf
EndProcedure


If InitNetwork()
Else
  MessageRequester("ERROR","Internet oder Programm im Eimer!")
  End
EndIf


If CreateNetworkServer(0,6124)
Else
  MessageRequester("ERROR","Port wird schon verwendet, oder irgendwas is mal wieder kaput.")
  End
EndIf


open_chat()

Repeat
  SEvent = NetworkServerEvent()
  ClientID = EventClient()
  Event = WaitWindowEvent(10)
  
  Select sevent
  Case 1
    schreibe("Client Ist da!!!")
  Case 2
    ReceiveNetworkData(ClientID,*Buffer,1000)
    schreibe("Client: " + PeekS(*Buffer))
  Case 4
    schreibe("Jetzt is Client wieder off.")
    e = 1
  EndSelect
  
  If Event = #PB_Event_CloseWindow
    End
  ElseIf event = #PB_Event_Gadget
    If #Button_6 = EventGadget() And #PB_EventType_LeftClick = EventType()
      text.s = GetGadgetText(#Text)
      SetGadgetText(#Text,"")
      schreibe("Felix: " + text)
      If SendNetworkString(ClientID,text)
      Else
        MessageRequester("ERROR","Kann den Text nicht senden.")
        End
      EndIf
    EndIf
  EndIf
Until e = 1
Client:

Code: Alles auswählen

IP.s = InputRequester("IP","IP Adresse eingeben","")

*Buffer = AllocateMemory(1000)

Enumeration
  #Chat
EndEnumeration

Enumeration
  #Chat
  #Text
  #Senden
  #Listview_1
  #Editor_1
  #Button_6
  #Button_7
EndEnumeration

Procedure Open_Chat()
  If OpenWindow(#Chat, 240, 27, 538, 363, "Chatclient",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ListViewGadget(#Listview_1, 10, 10, 520, 240)
      EditorGadget(#Editor_1, 10, 260, 360, 90)
      ButtonGadget(#Button_6, 380, 260, 150, 40, "Senden")
      ButtonGadget(#Button_7, 380, 310, 150, 40, "Einstellungen")
  EndIf
EndProcedure

Procedure Schreibe(text.s)
If AddGadgetItem(#Listview_1,0,text)
Else
  MessageRequester("ERROR","Kann keinen neuen Eintrag erstellen.")
  End
EndIf
EndProcedure

open_chat()

If InitNetwork()
Else
  MessageRequester("ERROR","Internet oder Programm im Eimer!")
  End
EndIf


ConnectionID = OpenNetworkConnection(IP,6124)

If ConnectionID
Else
  MessageRequester("ERROR","Kann nicht auf Server zugreifen.")
  End
EndIf

Repeat
  SEvent = NetworkClientEvent(ConnectionID)
  Event = WaitWindowEvent(10)
  If 1 = SEvent
    ReceiveNetworkData(ConnectionID,*Buffer,1000)
    schreibe("Server: " + PeekS(*Buffer))
  EndIf
  
  If Event = #PB_Event_CloseWindow
    End
  ElseIf event = #PB_Event_Gadget
    If #Button_6 = EventGadget() And #PB_EventType_LeftClick = EventType()
      text.s = GetGadgetText(#Text)
      SetGadgetText(#Text,"")
      schreibe("Client: " + text)
      If SendNetworkString(ConnectionID,text)
      Else
        MessageRequester("ERROR","Kann den Text nicht senden.")
        End
      EndIf
    EndIf
  EndIf
Until e = 1
Dankeschonmal

P.S. Ich hab natürlich auch schon geucht aber nicht gefunden. Nicht dass ihr denkt ich lass euch die Arbeit machen...
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Re: Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Deluxe0321 »

1. Schau mal wie dein Editorgadget Enumeriert ist.
2. Allocierst du überall einen Buffer?
3. AddGadgetItem gibt bei mir immer "0" zurück, die Procedure "Schreibe(text.s)" kann nicht funktionieren.
4. Warum SendNetworkstring wenn keine Eingabe getätigt wurde?

Kümmere dich erstmal um das, dann wird dir sicher noch mehr geholfen.
Ich habe keine Lösung, aber ich bewundere das Problem.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Sauer-RAM »

Ok das schreibe() funktioniert. Hab ich getestet und es auch mal mit printn() probiert. Wie meinst du das mit dem allocieren unddass mit dem sendnetworkstring?
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Re: Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Deluxe0321 »

Der Server hat z.B. keinen Buffer. Du sprichst zwar einen an, den hast du aber nicht erstellt (nur beim Client)
Wenn beim Absenden nichts im Editorgadet steht, gibt SendNetworkString 0 zurück, weil ja nichts gesendet wurde --> Programm beendet sich!
Ich habe keine Lösung, aber ich bewundere das Problem.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Sauer-RAM »

Ohh mann bin ich blöd jetzt gehts. Naja nur in eine Richtung der client empfängt nix könnt ihr mir bitte mal sagen warum? Ich find den Fehler neicht.

server:

Code: Alles auswählen

*Buffer = AllocateMemory(1000)
Enumeration
  #Chat
EndEnumeration

Enumeration
  #Chat
  #Text
  #Senden
  #Einstellungen
  #Listview_1
EndEnumeration


Procedure Open_Chat()
  If OpenWindow(#Chat, 240, 27, 538, 363, "Chatserver",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ListViewGadget(#Listview_1, 10, 10, 520, 240)
      EditorGadget(#Text, 10, 260, 360, 90)
      ButtonGadget(#Senden, 380, 260, 150, 40, "Senden")
      ButtonGadget(#Einstellungen, 380, 310, 150, 40, "Einstellungen")
  EndIf
EndProcedure

Procedure Schreibe(text.s)
AddGadgetItem(#Listview_1,0,text)
EndProcedure


If InitNetwork()
Else
  MessageRequester("ERROR","Internet oder Programm im Eimer!")
  End
EndIf


If CreateNetworkServer(0,6124)
Else
  MessageRequester("ERROR","Port wird schon verwendet, oder irgendwas is mal wieder kaput.")
  End
EndIf


open_chat()

Repeat
*Buffer = AllocateMemory(1000)
  SEvent = NetworkServerEvent()
  ClientID = EventClient()
  Event = WaitWindowEvent(10)
  
  Select sevent
  Case 1
    schreibe("Client Ist da!!!")
  Case 2
    ReceiveNetworkData(ClientID,*Buffer,1000)
    schreibe("Client: " + Trim(PeekS(*Buffer)))
  Case 4
    schreibe("Jetzt is Client wieder off.")
  EndSelect
  
  If Event = #PB_Event_CloseWindow
    End
  ElseIf event = #PB_Event_Gadget
    If #Senden = EventGadget() And #PB_EventType_LeftClick = EventType()
      text.s = GetGadgetText(#Text)
      SetGadgetText(#Text,"")
      schreibe("Felix: " + text)
      If SendNetworkString(ClientID,text)
      Else
        MessageRequester("ERROR","Kann den Text nicht senden.")
        End
      EndIf
    EndIf
  EndIf
Until e = 1
client:

Code: Alles auswählen

IP.s = "192.168.1.21"

*Buffer = AllocateMemory(1000)

Enumeration
  #Chat
EndEnumeration

Enumeration
  #Chat
  #Text
  #Senden
  #Einstellungen
  #Listview_1
EndEnumeration

Procedure Open_Chat()
  If OpenWindow(#Chat, 240, 27, 538, 363, "Chatclient",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ListViewGadget(#Listview_1, 10, 10, 520, 240)
      EditorGadget(#Text, 10, 260, 360, 90)
      ButtonGadget(#Senden, 380, 260, 150, 40, "Senden")
      ButtonGadget(#Einstellungen, 380, 310, 150, 40, "Einstellungen")
  EndIf
EndProcedure

Procedure Schreibe(text.s)
AddGadgetItem(#Listview_1,0,text)
EndProcedure

open_chat()

If InitNetwork()
Else
  MessageRequester("ERROR","Internet oder Programm im Eimer!")
  End
EndIf


ConnectionID = OpenNetworkConnection(IP,6124)

If ConnectionID
Else
  MessageRequester("ERROR","Kann nicht auf Server zugreifen.")
  End
EndIf

Repeat

  SEvent = NetworkClientEvent(ConnectionID)
  Event = WaitWindowEvent(10)
  If 1 = SEvent
    ReceiveNetworkData(ConnectionID,*Buffer,1000)
    schreibe("Server: " + Trim(PeekS(*Buffer)))
  EndIf
  
  If Event = #PB_Event_CloseWindow
    End
  ElseIf event = #PB_Event_Gadget
    If #Senden = EventGadget() And #PB_EventType_LeftClick = EventType()
      text.s = GetGadgetText(#Text)
      SetGadgetText(#Text,"")
      schreibe("Client: " + text)
      If SendNetworkString(ConnectionID,text)
      Else
        MessageRequester("ERROR","Kann den Text nicht senden.")
      EndIf
    EndIf
  EndIf
Until e = 1
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Sauer-RAM »

Ok hat sich erledigt läuft. bie networkclientevent() ist 1 nicht gleich networkevent_data wie beim server.
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Kiffi »

Sauer-RAM hat geschrieben:Ok hat sich erledigt läuft. bie networkclientevent() ist 1 nicht gleich networkevent_data wie beim server.
böte sich an, gleich die entsprechenden Konstanten zu verwenden

NetworkClientEvent():

Code: Alles auswählen

0                    : Nichts ist passiert
#PB_NetworkEvent_Data: Roh-Daten wurden empfangen (können mittels ReceiveNetworkData() gelesen werden)
#PB_NetworkEvent_File: Eine Datei wurde empfangen (kann mittels ReceiveNetworkFile() gelesen werden)
NetworkServerEvent():

Code: Alles auswählen

0                          : Nichts ist passiert
#PB_NetworkEvent_Connect   : Ein neuer Client wurde mit dem Server verbunden
#PB_NetworkEvent_Data      : Roh-Daten wurden empfangen (können mittels ReceiveNetworkData() gelesen werden)
#PB_NetworkEvent_File      : Eine Datei wurde empfangen (kann mittels ReceiveNetworkFile() gelesen werden)
#PB_NetworkEvent_Disconnect: Ein Client hat den Server verlassen (Verbindungstrennung)
Ist nebenbei auch viel einfacher zu lesen.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: Warum hat mein Chat keine Lust zu senden? Bitte helft mir

Beitrag von Max_der_Held »

aber echt he. und wenn mal keine konstanten da sind, mach welche.. zahlen sind böhse!
(vor allem bei großen codes weis man irgendwann nicht mehr, was 1 und was 2 war^^ kommentare hin oder her.)
Antworten