Skip to content

Instantly share code, notes, and snippets.

@mainframed
Created October 16, 2018 01:15
Show Gist options
  • Save mainframed/5f5eb761f639400745701eb8ce5e1de6 to your computer and use it in GitHub Desktop.
Save mainframed/5f5eb761f639400745701eb8ce5e1de6 to your computer and use it in GitHub Desktop.
Echo a socket
/* REXX */
/* Change port to user number */
/* i.e. EVIL21 set port to 55521 */
p = '46290'
mf_ip = '0.0.0.0'
n = "25"x
txt = ''
r = "READY"||n
s = SOCKET('INITIALIZE','DAEMON',2)
s = SOCKET('SOCKET')
parse var s socket_rc socketID .
s = Socket('SETSOCKOPT',socketID,'SOL_SOCKET','SO_REUSEADDR','ON')
s = Socket('SETSOCKOPT',socketID,'SOL_SOCKET','SO_LINGER','OFF')
s = Socket('SETSOCKOPT',socketID,'SOL_SOCKET','SO_KEEPALIVE','ON')
s = Socket('IOCTL',socketID,'FIONBIO','ON')
s = Socket('BIND',socketID,'AF_INET' p mf_ip)
s = Socket('Listen',socketID,2)
parse var s src .
clients = ''
DO FOREVER
s = Socket('Select','READ' socketID clients 'WRITE' 'EXCEPTION')
parse upper var s 'READ' readin 'WRITE' writtin 'EXCEPTION' exceptin
IF INLIST(socketID,readin) THEN DO
s = Socket('Accept',socketID)
parse var s src hID .
clients = hID
s = Socket('Socketsetstatus')
parse var s src . status
s = Socket('Setsockopt',hID,'SOL_SOCKET','SO_ASCII','ON')
s = Socket('Ioctl',hID,'FIONBIO','ON' )
/* s = SOCKET('SEND',hID, r)*/
END
if readin = hID THEN DO
in = SOCKET('RECV',hID,10000)
parse var in s_rc s_data_len s_data_text
txt = DELSTR(s_data_text, s_data_len)
text = txt
s = SOCKET('SEND',hID, text)
END
END
return 0
/*-------*/
INLIST: procedure
arg sock, socklist
DO i = 1 to words(socklist)
if words(socklist) = 0 then return 0
if sock = word(socklist,i) then return 1
end
return 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment