55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
INSTALL @lib$+"SOCKLIB"
|
|
PROC_initsockets
|
|
|
|
maxSess% = 8
|
|
DIM sock%(maxSess%-1), rcvd$(maxSess%-1), Buffer% 255
|
|
|
|
ON ERROR PRINT REPORT$ : PROC_exitsockets : END
|
|
ON CLOSE PROC_exitsockets : QUIT
|
|
|
|
crlf$ = CHR$13 + CHR$10
|
|
port$ = "12321"
|
|
host$ = FN_gethostname
|
|
PRINT "Host name is " host$
|
|
|
|
listen% = FN_tcplisten(host$, port$)
|
|
PRINT "Listening on port ";port$
|
|
|
|
REPEAT
|
|
socket% = FN_check_connection(listen%)
|
|
IF socket% THEN
|
|
FOR i% = 0 TO maxSess%-1
|
|
IF sock%(i%) = 0 THEN
|
|
sock%(i%) = socket%
|
|
rcvd$(i%) = ""
|
|
PRINT "Connection on socket "; sock%(i%) " opened"
|
|
EXIT FOR
|
|
ENDIF
|
|
NEXT i%
|
|
listen% = FN_tcplisten(host$, port$)
|
|
ENDIF
|
|
|
|
FOR i% = 0 TO maxSess%-1
|
|
IF sock%(i%) THEN
|
|
res% = FN_readsocket(sock%(i%), Buffer%, 256)
|
|
IF res% >= 0 THEN
|
|
Buffer%?res% = 0
|
|
rcvd$(i%) += $$Buffer%
|
|
crlf% = INSTR(rcvd$(i%), crlf$)
|
|
IF crlf% THEN
|
|
echo$ = LEFT$(rcvd$(i%), crlf%-1)
|
|
res% = FN_writelinesocket(sock%(i%), echo$)
|
|
rcvd$(i%) = MID$(rcvd$(i%), crlf%+2)
|
|
ENDIF
|
|
ELSE
|
|
PROC_closesocket(sock%(i%))
|
|
PRINT "Connection on socket " ; sock%(i%) " closed"
|
|
sock%(i%) = 0
|
|
ENDIF
|
|
ENDIF
|
|
NEXT i%
|
|
|
|
WAIT 0
|
|
UNTIL FALSE
|
|
END
|