The browser is the new GUI !



Task

Serve our standard text   Goodbye, World!   to   http://localhost:8080/   so that it can be viewed with a web browser.

The provided solution must start or implement a server that accepts multiple client connections and serves text as requested.

Note that starting a web browser or opening a new window with this URL
is not part of the task.

Additionally, it is permissible to serve the provided page as a plain text file (there is no requirement to serve properly formatted HTML here).

The browser will generally do the right thing with simple text like this.




 
val txt = Word8VectorSlice.full (Byte.stringToBytes  "hello world!"   ) ;
 
fun serve listener portnr =
 let
  fun next () =
   let
    val (conn, conn_addr) = Socket.accept listener
   in
    case  Posix.Process.fork () of
        NONE   =>
             (
	      Socket.sendVec(conn, txt); Socket.close conn ;
              OS.Process.exit OS.Process.success 
             )
       | _     =>
             (
	      Socket.close conn ;next ()
	     )
    end 
  in (
   Socket.Ctl.setREUSEADDR(listener, true);
   Socket.bind(listener, INetSock.any portnr );
   Socket.listen(listener, 9);
   next ()
   )
  end               handle x => (Socket.close listener; raise x)
;
 