ich habe ja diese chat programm geschrieben:
Server Seite:
Code: Alles auswählen
If InitNetwork() = 0
MessageRequester("Error", "Netzwerk konnte nicht Initialisiert werden!", 0)
End
EndIf
;*********************************************************************
Global Port = 6832
Global *Buffer = AllocateMemory(1000)
Global ClientID
Global Text$
Global SEvent
Global Name$
Global n
Global beenden
Global quit
Global Result
;********************************************************************************
Procedure CEV(x)
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case 0
Delay(100)
Case 1
If x=0
MessageRequester("PureBasic - Server", "A new client has connected !"+Str(ClientID), 0)
x=1
EndIf
Case 2
ReceiveNetworkData(ClientID, *Buffer, 1000)
AddGadgetItem (0, -1, "An "+name$+": "+PeekS(*Buffer))
n+1
SetGadgetState(0, n)
FreeMemory(*buffer)
*Buffer = AllocateMemory(1000)
EndSelect
EndIf
Until quit=1
EndProcedure
Procedure ServerS()
If ClientID
If SendNetworkString(ClientID, Text$)
Else
MessageRequester("Server", "Naricht konnte nicht gesendet werden", 0)
EndIf
Else
MessageRequester("Error","Client nicht gefunden(Ist er Online?)")
EndIf
EndProcedure
Procedure NRicht(x)
Repeat
If GetGadgetState(2)=1
text$=GetGadgetText(1)
SetGadgetState(2,0)
SetGadgetText(1,"")
n+1
AddGadgetItem(0,-1,name$+":"+Text$)
SetGadgetState(0, n)
ServerS()
ElseIf GetGadgetState(3)=1
beenden=1
SetGadgetState(3,0)
EndIf
Until quit=1
EndProcedure
Procedure Liste(x)
If OpenWindow(0, 100, 0, 270, 640, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 10, 30, 250, 580)
StringGadget(1, 10, 5, 195, 20, "Normal StringGadget...")
ButtonGadget(2, 207,5, 55, 20, "Senden", #PB_Button_Toggle)
ButtonGadget(3, 10,615, 250, 20, "Beenden", #PB_Button_Toggle)
AddGadgetItem (0, -1, "Chat Verlauf")
CreateThread(@NRicht(),1)
Repeat :Until WaitWindowEvent() = #PB_Event_CloseWindow Or quit=1
EndIf
EndProcedure
;******************************************************************************************************
Name$=InputRequester("Name","Bitte geben sie ihren namen ein","Herr ...")
If CreateNetworkServer(1, Port)
MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
CreateThread(@CEV(),1)
CreateThread(@Liste(),1)
;*****************************************Hauptschleife*******************************************
Repeat
If beenden=1
Result=MessageRequester("PureBasic - Server", "Server beenden?",1 )
If Result=1
Quit=1
If CloseNetworkServer(1)
MessageRequester("Server", "Der Server wurde Beendet",0 )
Else
MessageRequester("Server", "Der Server konnte nicht beendet werden",0 )
EndIf
Else
beenden=0
EndIf
EndIf
Until quit=1
;*****************************************************************************************************
Else
MessageRequester("Error", "Server konnte nicht erstellt werden", 0)
EndIf
Code: Alles auswählen
If InitNetwork() = 0
MessageRequester("Error", "Netzwerk konnte nicht Initialisiert werden!", 0)
End
EndIf
;*********************************************************************
Global Port = 6832
Global ConnectionID
Global SEvent
Global Text$
Global *Buffer = AllocateMemory(1000)
Global name$
Global result
Global quit
Global beenden
;********************************************************************************
Procedure CEV(x)
Repeat
SEvent = NetworkClientEvent(ConnectionID)
If SEvent
Select SEvent
Case 0
Delay(100)
Case 2
ReceiveNetworkData(ConnectionID, *Buffer, 1000)
AddGadgetItem (0, -1, "An "+name$+": "+PeekS(*Buffer))
n+1
SetGadgetState(0, n)
FreeMemory(*buffer)
*Buffer = AllocateMemory(1000)
EndSelect
EndIf
Until quit=1
EndProcedure
Procedure ServerSendung()
If connectionID
If SendNetworkString(ConnectionID, Text$)
CloseNetworkConnection(ConnectionID)
ConnectionID=OpenNetworkConnection("169.254.77.235", Port)
Else
MessageRequester("Error","Naricht konnt nicht gesendet werden")
EndIf
Else
MessageRequester("Error","Server nicht gefunden!(Ist er Online?)")
EndIf
EndProcedure
Procedure NRicht(x)
Repeat
If GetGadgetState(2)=1
text$=GetGadgetText(1)
SetGadgetState(2,0)
SetGadgetText(1,"")
n+1
AddGadgetItem(0,-1,name$+":"+Text$)
SetGadgetState(0,n)
ServerSendung()
ElseIf GetGadgetState(3)=1
beenden=1
SetGadgetState(3,0)
EndIf
Until quit=1
EndProcedure
Procedure Liste(x)
If OpenWindow(0, 100, 0, 270, 640, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 10, 30, 250, 580)
StringGadget(1, 10, 5, 195, 20, "Normal StringGadget...")
ButtonGadget(2, 207,5, 55, 20, "Senden", #PB_Button_Toggle)
ButtonGadget(3, 10,615, 250, 20, "Beenden", #PB_Button_Toggle)
AddGadgetItem (0, -1, "Chat Verlauf")
CreateThread(@NRicht(),1)
Repeat :Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndProcedure
;*****************************************************************************************
Name$=InputRequester("Name","Bitte geben sie ihren namen ein","Herr ...")
ConnectionID=OpenNetworkConnection("169.254.77.235", Port)
CreateThread(@CEV(),1)
CreateThread(@Liste(),1)
;********************Hauptschleife**********************************************
Repeat
If beenden=1
Result=MessageRequester("Server", "Client beenden",1 )
If Result=1
Quit=1
If CloseNetworkServer(1)
MessageRequester("Server", "Der Client wurde Beendet",0 )
Else
MessageRequester("Server", "Der Client konnte nicht beendet werden",0 )
EndIf
Else
beenden=0
EndIf
EndIf
Until quit=1
;***************************************************************************************
1. Machen kann das man die nachricht mit Enter abschickt
2.Wie man machen kann das man den Text automatisch eingeben kann ohne ins
Eingabefeld zu klicken
Für antworten oder hinweise währe ich sehr dankbar