36 lines
1.4 KiB
Plaintext
36 lines
1.4 KiB
Plaintext
DECLARE user$ ASSOC STRING
|
|
DECLARE connect ASSOC long
|
|
OPEN "localhost:51000" FOR SERVER AS mynet
|
|
WHILE TRUE
|
|
IF WAIT(mynet, 30) THEN
|
|
fd = ACCEPT(mynet)
|
|
connect(GETPEER$(fd)) = fd
|
|
SEND "Enter your name: " TO fd
|
|
ELSE
|
|
FOR con$ IN OBTAIN$(connect)
|
|
IF WAIT(connect(con$), 10) THEN
|
|
RECEIVE in$ FROM connect(con$)
|
|
IF user$(GETPEER$(connect(con$))) = "" THEN
|
|
user$(GETPEER$(connect(con$))) = CHOP$(in$)
|
|
chat$ = chat$ & user$(GETPEER$(connect(con$))) & " joined the chat." & NL$
|
|
SEND "Welcome, " & CHOP$(in$) & "!" & NL$ TO connect(con$)
|
|
ELIF LEFT$(in$, 4) = "quit" THEN
|
|
SEND "You're disconnected!" & NL$ TO connect(con$)
|
|
chat$ = chat$ & user$(GETPEER$(connect(con$))) & " left the chat." & NL$
|
|
FREE user$(GETPEER$(connect(con$)))
|
|
FREE connect(con$)
|
|
CLOSE SERVER connect(con$)
|
|
ELIF LEFT$(in$, 4) = "say " THEN
|
|
chat$ = chat$ & user$(GETPEER$(connect(con$))) & " said: " & MID$(in$, 5)
|
|
ENDIF
|
|
ENDIF
|
|
NEXT
|
|
IF LEN(chat$) > 0 THEN
|
|
FOR con$ IN OBTAIN$(connect)
|
|
IF user$(GETPEER$(connect(con$))) <> "" THEN SEND chat$ TO connect(con$)
|
|
NEXT
|
|
chat$ = ""
|
|
ENDIF
|
|
ENDIF
|
|
WEND
|