32 lines
1.1 KiB
Plaintext
32 lines
1.1 KiB
Plaintext
NewMap RecData.s()
|
|
OpenWindow(0, 100, 200, 200, 100, "Echo Server", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget )
|
|
InitNetwork()
|
|
CreateNetworkServer(1, 12321)
|
|
|
|
Repeat
|
|
Event = NetworkServerEvent()
|
|
ClientID = EventClient()
|
|
|
|
If Event = #PB_NetworkEvent_Connect ; When a new client has been connected...
|
|
AddMapElement(RecData(), Str(ClientID))
|
|
|
|
ElseIf Event = #PB_NetworkEvent_Data
|
|
*Buffer = AllocateMemory(20000)
|
|
count = ReceiveNetworkData(ClientID, *Buffer, 20000)
|
|
For i = 1 To count
|
|
RecData(Str(ClientID)) + Mid( PeekS(*Buffer, count), i , 1)
|
|
If Right( RecData(Str(ClientID)), 2) = #CRLF$
|
|
SendNetworkString (ClientID, RecData(Str(ClientID)))
|
|
Debug IPString(GetClientIP(ClientID)) + ":" + Str(GetClientPort(ClientID)) + " " + RecData(Str(ClientID))
|
|
RecData(Str(ClientID)) = ""
|
|
EndIf
|
|
Next
|
|
FreeMemory(*Buffer)
|
|
|
|
ElseIf Event = #PB_NetworkEvent_Disconnect ; When a client has closed the connection...
|
|
DeleteMapElement(RecData(), Str(ClientID))
|
|
EndIf
|
|
|
|
Event = WaitWindowEvent(10)
|
|
Until Event = #PB_Event_CloseWindow
|