http://keykon.ke.ohost.de/daten/chat.zip Zip,33KB
Viel Spaß! Würde mich über Feedback freuen

KeyKon
Code: Alles auswählen
EnableExplicit
InitNetwork()
#BUFFERSIZE = 1024
Define *receiveBuffer = AllocateMemory(#BUFFERSIZE)
Define receivedLen
NewList Users.i()
If Not CreateNetworkServer(0,12345)
Debug "FailCreation"
End
EndIf
OpenConsole()
PrintN("Server up and running!")
Repeat
Select NetworkServerEvent()
Case #PB_NetworkEvent_Connect
PrintN("New User")
AddElement(Users())
Users() = EventClient()
Case #PB_NetworkEvent_Disconnect
PrintN("Lost User")
ForEach Users()
If Users() = EventClient()
DeleteElement(Users())
Break
EndIf
Next
Case #PB_NetworkEvent_Data
Print("Message - ")
receivedLen = ReceiveNetworkData(EventClient(),*receiveBuffer,#BUFFERSIZE)
If receivedLen > 0
PrintN(PeekS(*receiveBuffer,receivedLen))
ForEach Users()
If Users() <> EventClient()
SendNetworkData(Users(),*receiveBuffer,receivedLen)
EndIf
Next
Else
PrintN("Fail")
EndIf
Default
Delay(5)
EndSelect
ForEver
Code: Alles auswählen
EnableExplicit
#BUFFERSIZE = 1024
Define *receiveBuffer = AllocateMemory(1024)
Define *sendBuffer
Define cid
Define name.s = "KeyKon2"
Define sendText.s
InitNetwork()
OpenWindow(0,0,0,640,480,"MiniChat",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListIconGadget(0,10,10,620,430,"Chat",619)
StringGadget(1,10,450,620,20,"")
AddKeyboardShortcut(0,#PB_Shortcut_Return,0)
cid = OpenNetworkConnection("127.0.0.1",12345)
If cid = 0
Debug "FailConnection"
End
EndIf
Repeat
Select WaitWindowEvent(5)
Case #PB_Event_CloseWindow
CloseNetworkConnection(cid)
End
Case #PB_Event_Menu
Select EventMenu()
Case 0
If Len(GetGadgetText(1)) > 0 And Len(GetGadgetText(1))+Len(name)+2 < #BUFFERSIZE
sendText = name+": "+GetGadgetText(1)
*sendBuffer = AllocateMemory(Len(sendText))
PokeS(*sendBuffer,sendText)
If SendNetworkData(cid,*sendBuffer,MemorySize(*sendBuffer)) = MemorySize(*sendBuffer)
AddGadgetItem(0,-1,sendText)
SendMessage_(GadgetID(0),#EM_SCROLL,#SB_BOTTOM,0) ;Nach unten scrollen
SetGadgetItemColor(0,CountGadgetItems(0)-1,#PB_Gadget_BackColor,RGB(192,192,192))
SetGadgetText(1,"")
sendText = ""
EndIf
FreeMemory(*sendBuffer)
EndIf
EndSelect
EndSelect
If NetworkClientEvent(cid) = #PB_NetworkEvent_Data
If ReceiveNetworkData(cid,*receiveBuffer,#BUFFERSIZE) > -1
AddGadgetItem(0,-1,PeekS(*receiveBuffer))
SendMessage_(GadgetID(0),#EM_SCROLL,#SB_BOTTOM,0) ;Nach unten scrollen
EndIf
EndIf
ForEver