Seite 1 von 1

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

Verfasst: 11.02.2010 11:34
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...

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

Verfasst: 11.02.2010 13:16
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.

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

Verfasst: 11.02.2010 13:43
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?

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

Verfasst: 11.02.2010 16:24
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!

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

Verfasst: 11.02.2010 16:34
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

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

Verfasst: 11.02.2010 17:06
von Sauer-RAM
Ok hat sich erledigt läuft. bie networkclientevent() ist 1 nicht gleich networkevent_data wie beim server.

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

Verfasst: 11.02.2010 17:11
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

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

Verfasst: 13.02.2010 03:31
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.)