habe trotzdem n Chat geschrieben, zwar doch nicht console aber klein genug ^^
Code in PureBasic hat geschrieben:InitNetwork()
#Port = 6500
Structure Client
ID.l
Name$
EndStructure
Global NewList Client.Client()
Procedure Ausgabe(String$)
AddGadgetItem(1, -1, String$)
SetActiveGadget(1)
SetScrollPos_(GadgetID(1),#SB_VERT, 100, 1)
SetActiveGadget(2)
EndProcedure
Procedure.s Eingabe()
String$ = GetGadgetText(2)
SetGadgetText(2, "")
ProcedureReturn String$
EndProcedure
Global *LeseBuffer = AllocateMemory(1024)
Global *SchreibBuffer = AllocateMemory(1024)
Procedure ClientProcedure(Client)
Event = NetworkClientEvent(Client)
Select Event
Case #PB_NetworkEvent_Data
ReceiveNetworkData(Client, *LeseBuffer, 1024)
Ausgabe(PeekS(*LeseBuffer))
EndSelect
EndProcedure
Procedure ServerProcedure()
Event = NetworkServerEvent()
Select Event
Case #PB_NetworkEvent_Connect
AddElement(Client())
Client()\ID = EventClient()
Case #PB_NetworkEvent_Data
ReceiveNetworkData(EventClient(), *LeseBuffer, 1024)
If Not Client()\Name$
ForEach Client()
If Client()\ID = EventClient()
Client()\Name$ = PeekS(*LeseBuffer)
EndIf
Next
PokeS(*SchreibBuffer, FormatDate("[%hh:%ii:%ss]", Date())+" CONSOLE : "+PeekS(*LeseBuffer)+" hat den Raum betreten.")
ForEach Client()
SendNetworkData(Client()\ID, *SchreibBuffer, 1024)
Next
Else
ForEach Client()
If Client()\ID = EventClient()
Name$ = Client()\Name$
EndIf
Next
PokeS(*SchreibBuffer, FormatDate("[%hh:%ii:%ss]", Date())+" "+Name$+" : "+PeekS(*LeseBuffer))
ForEach Client()
SendNetworkData(Client()\ID, *SchreibBuffer, 1024)
Next
EndIf
Case #PB_NetworkEvent_Disconnect
ForEach Client()
If Client()\ID = EventClient()
Name$ = Client()\Name$
DeleteElement(Client())
EndIf
Next
PokeS(*SchreibBuffer, FormatDate("[%hh:%ii:%ss]", Date())+" CONSOLE : "+Name$+" hat den Raum verlassen.")
ForEach Client()
SendNetworkData(Client()\ID, *SchreibBuffer, 1024)
Next
EndSelect
EndProcedure
OpenWindow(1,0,0,400,300,"Chat", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(1))
EditorGadget(1, 5, 5, 390, 260, #PB_Editor_ReadOnly)
StringGadget(2, 5, 275, 390, 20, "")
AddKeyboardShortcut(1, #PB_Shortcut_Return, 3)
Status = 1
Ausgabe(" Einfacher Chat ")
Ausgabe("================")
Ausgabe("Geben sie die ServerIP ein, oder garnichts um ein Server zu erstellen:")
Repeat
If Server
ServerProcedure()
EndIf
If Client
ClientProcedure(Client)
EndIf
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Menu
Select EventMenu()
Case 3
Eingabe$ = Eingabe()
Select Status
Case 1
If Eingabe$
Ausgabe("IP: "+Eingabe$)
Ausgabe("Verbingungsvorgang ...")
Client = OpenNetworkConnection(Eingabe$, #Port)
If Client
Ausgabe(" Verbunden")
Ausgabe("Geben sie ihren Chat-Namen ein:")
Status = 2
Else
Ausgabe(" Fehlgeschlagen")
Ausgabe("Geben sie die ServerIP ein, oder garnichts um ein Server zu erstellen:")
EndIf
Else
Ausgabe("Servererstennungsvorgang ...")
Server = CreateNetworkServer(1, #Port)
If Server
Client = OpenNetworkConnection("127.0.0.1", #Port)
Ausgabe(" Erstellt")
Ausgabe("Geben sie ihren Chat-Namen ein:")
Status = 2
Else
Ausgabe(" Fehlgeschlagen")
Ausgabe("Geben sie die ServerIP ein, oder garnichts um ein Server zu erstellen:")
EndIf
EndIf
Case 2
MeinName$ = Eingabe$
If MeinName$
Ausgabe("Mein Name: "+Eingabe$)
PokeS(*SchreibBuffer, MeinName$)
SendNetworkData(Client, *SchreibBuffer, 1024)
Status = 3
Else
Ausgabe("Geben sie ihren Chat-Namen ein:")
EndIf
Case 3
PokeS(*SchreibBuffer, Eingabe$)
SendNetworkData(Client, *SchreibBuffer, 1024)
EndSelect
EndSelect
EndSelect
ForEver