Seite 1 von 1

Chatprogramm

Verfasst: 17.10.2007 16:44
von kreeph
Hi, Leute, ich hab mal angefangen ein Chatprogramm zu schreiben. Am Anfang hat alles gut geklappt. Zu gut ^^ aber jetzt sind in dem Code doch noch ein paar Fehler. Das Programm soll am Anfang prüfen ob es den Server gibt, sonst einen eigenen erstellen. Dann sollen eben die Daten überwickelt werden und im Feld für die Anzeige reingeschrieben werden. Im Code sind einfach ein paar Fehler, die ich nicht verstehe und einfach nicht beheben kann. Ich hoffe ihr könnt mir helfen. Habe immer noch 3.30 -.-

Code: Alles auswählen

#Empfangsfenster=0:#Schreibfenster=1
If InitNetwork()=0:MessageRequester("Error","Bitte prüfe deine Verbindung",0):End:EndIf
OpenWindow(0,400,400,400,300,#pb_window_systemmenu,"Vserver"):CreateGadgetList(WindowID())
CreateStatusBar(0,WindowID())
StringGadget(#Empfangsfenster,5,5,300,200,"",#PB_String_MultiLine|#ESB_DISABLE_BOTH|#ES_AUTOVSCROLL|#WS_VSCROLL|#pb_string_readonly)
StringGadget(#Schreibfenster,5,215,300,62,"",#PB_String_MultiLine|#ESB_DISABLE_BOTH|#ES_AUTOVSCROLL|#WS_VSCROLL)
Frame3DGadget(3,310,215,80,62,"",1)
Frame3DGadget(5,310,5  ,80,200,"",2):
ButtonGadget(2,325,232,50,31,"Senden")
ButtonGadget(4,315,12,70,31,"Datei senden")

Port = 6932
Buffer = AllocateMemory(0, 10000, 0)
Name$ = "Nik"
Client1name$="Client"

ConnectionID=OpenNetworkConnection("127.0.0.1",Port)

If ConnectionID=0
If CreateNetworkServer(Port)


  Repeat
  
  If WaitWindowEvent()=#pb_event_gadget
  If EventGadgetID()=2
  SendNetworkString(ClientID,Name$+":   "+GetGadgetText(#Schreibfenster)+Chr(13)+Chr(10))
  SetGadgetText(#Empfangsfenster,GetGadgetText(#Empfangsfenster)+Name$+":   "+GetGadgetText(#Schreibfenster)+Chr(13)+Chr(10))
  SetGadgetText(#Schreibfenster,""):
  EndIf
  EndIf
  
    If NetworkServerEvent()
    
      ClientID = NetworkClientID()
  
      Select NetworkServerEvent()
      
        Case 1;neuer client
          SetGadgetText(#Empfangsfenster,GetGadgetText(#Empfangsfenster)+"<> neuer Client: "+Client1name$+" <>"+Chr(13)+Chr(10))
  
        Case 2;Text empfangen
        
          ReceiveNetworkData(ClientID, Buffer, 10000)
          SetGadgetText(#Empfangsfenster,GetGadgetText(#Empfangsfenster)+PeekS(Buffer))
  
        Case 3;Datei enpfangen
          If MessageRequester("Datei von Client",Client1name$+" hat ihnen eine Datei gesendet", #pb_messagerequester_yesno)=6
          ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3"):EndIf
  
        Case 4;client verlassen
          StatusBarText(0,0,Client1name$+" hat den Server verlassen",0)
    
      EndSelect
    EndIf
    
  Until WindowEvent()=#pb_eventclosewindow Or getasynckeystate_(#vk_escape)<>0 

  CloseNetworkServer()
EndIf:Else;************************************************************************* Als Client***************************************************

Repeat
  
  If WaitWindowEvent()=#pb_event_gadget
  If EventGadgetID()=2
  SendNetworkString(ConnectionID,Name$+":   "+GetGadgetText(#Schreibfenster)+Chr(13)+Chr(10))
  SetGadgetText(#Empfangsfenster,GetGadgetText(#Empfangsfenster)+Name$+":   "+GetGadgetText(#Schreibfenster)+Chr(13)+Chr(10))
  SetGadgetText(#Schreibfenster,""):
  EndIf
  EndIf
  
    If NetworkClientEvent(ConnectionID)
    
      ConnectionID= NetworkClientID()
  
      Select NetworkServerEvent();ConnectionID)
      
        ;Case 1;neuer client
          ;SetGadgetText(#Empfangsfenster,GetGadgetText(#Empfangsfenster)+"<> neuer Client: "+Client1name$+" <>"+Chr(13)+Chr(10))
  
        Case 2;Text empfangen
        
          ReceiveNetworkData(ConnectionID, Buffer, 10000)
          MessageRequester("Info", "String: "+PeekS(Buffer), 0)
          SetGadgetText(#Empfangsfenster,GetGadgetText(#Empfangsfenster)+Client1name$+":   "+PeekS(Buffer))
  
        Case 3;Datei enpfangen
          If MessageRequester("Datei von Client",Client1name$+" hat ihnen eine Datei gesendet", #pb_messagerequester_yesno)=6
          ReceiveNetworkFile(ConnectionID, "C:\TEST_Network.ftp3"):EndIf
  
        ;Case 4;client verlassen
          ;StatusBarText(0,0,Client1name$+" hat den Server verlassen",0)
    
      EndSelect
    EndIf
    
  Until WindowEvent()=#pb_eventclosewindow Or getasynckeystate_(#vk_escape)<>0 

EndIf
  
End   
Danke schonmal!