langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
|
|
@ -0,0 +1,37 @@
|
|||
/* NetRexx */
|
||||
options replace format comments java crossref symbols binary
|
||||
|
||||
class RHelloWorldWebServer public
|
||||
|
||||
properties public constant
|
||||
isTrue = boolean (1 == 1)
|
||||
isFalse = boolean (1 \== 1)
|
||||
greeting1 = "Goodbye, World!"
|
||||
greeting2 = '' -
|
||||
|| 'HTTP/1.1 200 OK\r\n' -
|
||||
|| 'Content-Type: text/html; charset=UTF-8\r\n\r\n' -
|
||||
|| '<?xml version="1.0" encoding="UTF-8"?>\r\n' -
|
||||
|| '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n' -
|
||||
|| '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r\n' -
|
||||
|| '<header>\r\n' -
|
||||
|| '<title>Hello</title>\r\n' -
|
||||
|| '<style type="text/css">body {font-family: sans-serif;}</style>\r\n' -
|
||||
|| '</header>\r\n' -
|
||||
|| '<body>\r\n' -
|
||||
|| '<h2 style="text-align: center;">' || greeting1 || '</h2>\r\n' -
|
||||
|| '</body>\r\n' -
|
||||
|| '</html>\r\n' -
|
||||
|| ''
|
||||
|
||||
properties static inheritable
|
||||
terminate = isFalse -- TODO: provide a less draconian means to terminate the listener loop
|
||||
|
||||
method main(args = String[]) public static signals IOException
|
||||
listener = ServerSocket(8080)
|
||||
loop label listener forever
|
||||
if terminate then leave listener
|
||||
sock = listener.accept()
|
||||
PrintWriter(sock.getOutputStream(), isTrue).println(greeting2)
|
||||
sock.close()
|
||||
end listener
|
||||
return
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
let try_finalise f x finally y =
|
||||
let res = try f x with e -> finally y; raise e in
|
||||
finally y;
|
||||
res
|
||||
|
||||
let rec restart_on_EINTR f x =
|
||||
try f x with Unix.Unix_error (Unix.EINTR, _, _) -> restart_on_EINTR f x
|
||||
|
||||
let double_fork_treatment server service (client_descr, _ as client) =
|
||||
let treat () =
|
||||
match Unix.fork () with
|
||||
| 0 ->
|
||||
if Unix.fork () <> 0 then exit 0;
|
||||
Unix.close server; service client; exit 0
|
||||
| k ->
|
||||
ignore (restart_on_EINTR (Unix.waitpid []) k)
|
||||
in
|
||||
try_finalise treat () Unix.close client_descr
|
||||
|
||||
let install_tcp_server_socket addr =
|
||||
let s = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in
|
||||
try
|
||||
Unix.bind s addr;
|
||||
Unix.listen s 10;
|
||||
s
|
||||
with e -> Unix.close s; raise e
|
||||
|
||||
let tcp_server treat_connection addr =
|
||||
ignore (Sys.signal Sys.sigpipe Sys.Signal_ignore);
|
||||
let server_sock = install_tcp_server_socket addr in
|
||||
while true do
|
||||
let client = restart_on_EINTR Unix.accept server_sock in
|
||||
treat_connection server_sock client
|
||||
done
|
||||
|
||||
let server () =
|
||||
let port = 8080 in
|
||||
let host = (Unix.gethostbyname (Unix.gethostname())).Unix.h_addr_list.(0) in
|
||||
let addr = Unix.ADDR_INET (host, port) in
|
||||
let treat sock (client_sock, client_addr as client) =
|
||||
let service (s, _) =
|
||||
let response = "\
|
||||
HTTP/1.1 200 OK\r\n\
|
||||
Content-Type: text/html; charset=UTF-8\r\n\r\n\
|
||||
<html><head><title>Goodbye, world!</title>\
|
||||
<style>body { background-color: #0FF }\
|
||||
h1 { font-size:3em; color: black; }</style></head>\
|
||||
<body><h1>Goodbye, world!</h1></body></html>\r\n"
|
||||
in
|
||||
Unix.write s response 0 (String.length response);
|
||||
in
|
||||
double_fork_treatment sock service client
|
||||
in
|
||||
tcp_server treat addr
|
||||
|
||||
let _ =
|
||||
Unix.handle_unix_error server ()
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
use Net;
|
||||
use Concurrency;
|
||||
|
||||
bundle Default {
|
||||
class GoodByeWorld {
|
||||
function : Main(args : String[]) ~ Nil {
|
||||
server := TCPSocketServer->New(8080);
|
||||
if(server->Listen(5)) {
|
||||
while(true) {
|
||||
client := server->Accept();
|
||||
client->WriteString("<html>\n<body>\nGoodbye, world!\n</body>\n</html>\n");
|
||||
client->Close();
|
||||
};
|
||||
};
|
||||
server->Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
server = one_page_server("Hello", -> <>Goodbye, world</>)
|
||||
|
|
@ -0,0 +1 @@
|
|||
opa file.opa --
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
my $sock = IO::Socket::INET.new(:localhost('0.0.0.0'), :localport(8080), :listen);
|
||||
say "Goodbye Web Server listening on $sock.localhost():$sock.localport()";
|
||||
while $sock.accept -> $client {
|
||||
$client.send: "HTTP/1.0 200 OK\r\nContent-Type: text/plain; charset=UTF-8\r\n\r\nGoodbye, World!\r\n";
|
||||
$client.close;
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
If InitNetwork() = 0
|
||||
MessageRequester("Error", "Can't initialize the network !")
|
||||
End
|
||||
EndIf
|
||||
|
||||
Port = 8080
|
||||
|
||||
If CreateNetworkServer(0, Port)
|
||||
Repeat
|
||||
Delay(1)
|
||||
SEvent = NetworkServerEvent()
|
||||
If SEvent
|
||||
ClientID = EventClient()
|
||||
Select SEvent
|
||||
Case #PB_NetworkEvent_Data
|
||||
SendNetworkData(ClientID,@"Goodbye, World!",Len("Goodbye, World!"))
|
||||
CloseNetworkConnection(ClientID)
|
||||
EndSelect
|
||||
EndIf
|
||||
ForEver
|
||||
Else
|
||||
MessageRequester("Error", "Can't create the server (port in use ?).")
|
||||
EndIf
|
||||
|
|
@ -0,0 +1 @@
|
|||
html "Hello World!"
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
use "http.salm" : "http.si";
|
||||
|
||||
/* Don't do any logging. */
|
||||
procedure log(...) { };
|
||||
|
||||
simple_http_server(8080, procedure(header, connection)
|
||||
{ respond_text(connection, "Goodbye, World!"); });
|
||||
Loading…
Add table
Add a link
Reference in a new issue