atom server atom client atom file sequence text , buffer sequence longtext={} -- dit is een stream reader daar gets() een line reader is function readlineclient(integer client) sequence data={} integer timeout integer cr_where sequence line={} cr_where=find('\n',longtext) if cr_where = 0 then timeout = 1 while sequence(data) and timeout!=0 do data = gets(client) if data = 0 then puts(1,"WAIT TIME OUT\n") data = "" timeout-=1 elsif data=-1 then puts(1,"EOF recieved\n") exit elsif sequence(data) then longtext&=data cr_where=find('\n',longtext) if cr_where then exit end if end if end while end if if cr_where then line = longtext[1..cr_where] longtext=longtext[cr_where+1..] else if length(longtext) then line = longtext longtext="" else return data end if end if printf(1,"? %s",{line}) return line end function -- main program server=open("127.0.0.1:6000","s") -- open file as (URL,server_mode) while 1 do -- loop fore_ever client = open(server,"a") -- open file as (server,accept_mode) if client<0 then puts(1,"error in accept\n") abort(1) end if -- /* lees van client */ text = readlineclient(client) buffer = {text} while length(text)!=2 do text = readlineclient(client) insert(buffer,text,-1) -- only PEU , is faster -- buffer=append(buffer,text) -- both PEU , Euphoria end while -- decode HTML commando text="" if "GET"=buffer[1][1..3] then text= buffer[1][6 .. match(" HTTP",buffer[1])-1] puts(1,text) elsif "POST"=buffer[1][1..4] then text = readlineclient(client) printf(1,"->%s\n",{text}) else puts(1,"nog niet bekende opdracht\n") end if -- /* schrijf file naar client */ if length(text) then file = open(text,"r") else file = open("menno.html","r") -- default end if if file=-1 then puts(client,"File ") puts(client,text) puts(client," not found") puts(1,"HTTP/1.1 404 not found\r\n\r\n") else puts(client,"HTTP/1.1 Content-Type: text/plain \r\n\r\n") text = gets(file) while sequence(text) do printf(client,"%s",{text}) text = gets(file) end while close(file) end if close(client) -- close file : client end while -- end program