update
This commit is contained in:
parent
1f1ad49427
commit
6f050a029e
2496 changed files with 37609 additions and 3031 deletions
|
|
@ -1,28 +1,21 @@
|
|||
-module(hello_world_server).
|
||||
-module( hello_world_web_server ).
|
||||
|
||||
-export([start/0, loop0/1]).
|
||||
-export( [do/1, httpd_start/2, httpd_stop/1, task/0] ).
|
||||
|
||||
-define(PORTNO, 8080).
|
||||
do( _Data ) ->
|
||||
{proceed, [{response,{200,"Goodbye, World!"}}]}.
|
||||
|
||||
start() ->
|
||||
start(?PORTNO).
|
||||
start(Pno) ->
|
||||
spawn(?MODULE, loop0, [Pno]).
|
||||
httpd_start( Port, Module ) ->
|
||||
Arguments = [{bind_address, "localhost"}, {port, Port}, {ipfamily, inet},
|
||||
{modules, [Module]},
|
||||
{server_name,erlang:atom_to_list(Module)}, {server_root,"."}, {document_root,"."}],
|
||||
{ok, Pid} = inets:start( httpd, Arguments, stand_alone ),
|
||||
Pid.
|
||||
|
||||
httpd_stop( Pid ) ->
|
||||
inets:stop( stand_alone, Pid ).
|
||||
|
||||
loop0(Port) ->
|
||||
case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of
|
||||
{ok, LSock} ->
|
||||
loop(LSock);
|
||||
_ ->
|
||||
stop
|
||||
end.
|
||||
|
||||
loop(Listen) ->
|
||||
case gen_tcp:accept(Listen) of
|
||||
{ok, S} ->
|
||||
gen_tcp:send(S, io_lib:format("Goodbye, World!~n", [])),
|
||||
gen_tcp:close(S),
|
||||
loop(Listen);
|
||||
_ ->
|
||||
loop(Listen)
|
||||
end.
|
||||
task() ->
|
||||
Pid = httpd_start( 8080, ?MODULE ),
|
||||
timer:sleep( 30000 ),
|
||||
httpd_stop( Pid ).
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/",
|
||||
func(w http.ResponseWriter, req *http.Request) {
|
||||
fmt.Fprintln(w, "Goodbye, World!")
|
||||
})
|
||||
if err := http.ListenAndServe(":8080", nil); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
|
||||
fmt.Fprintln(w, "Goodbye, World!")
|
||||
})
|
||||
log.Fatal(http.ListenAndServe(":8080", nil))
|
||||
}
|
||||
|
|
|
|||
15
Task/Hello-world-Web-server/Io/hello-world-web-server.io
Normal file
15
Task/Hello-world-Web-server/Io/hello-world-web-server.io
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
WebRequest := Object clone do(
|
||||
handleSocket := method(aSocket,
|
||||
aSocket streamWrite("Goodbye, World!")
|
||||
aSocket close
|
||||
)
|
||||
)
|
||||
|
||||
WebServer := Server clone do(
|
||||
setPort(8080)
|
||||
handleSocket := method(aSocket,
|
||||
WebRequest clone asyncSend(handleSocket(aSocket))
|
||||
)
|
||||
)
|
||||
|
||||
WebServer start
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
MODULE access;
|
||||
|
||||
FROM InOut IMPORT WriteString, WriteLn;
|
||||
|
||||
BEGIN
|
||||
WriteString ("Content-Type : text/plain");
|
||||
WriteLn;
|
||||
WriteLn;
|
||||
WriteString ("Hello web wide world.");
|
||||
WriteLn
|
||||
END access.
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
% The following modules are used in the main module to start a server.
|
||||
:- use_module(library(http/thread_httpd)).
|
||||
:- use_module(library(http/http_dispatch)).
|
||||
|
||||
% The following module is used in every module that describes a page.
|
||||
:- use_module(library(http/html_write)).
|
||||
|
||||
% Main entry point: starts the server on port 8080.
|
||||
server :- http_server(http_dispatch, [port(8080)]).
|
||||
|
||||
% Defines the handler for the root URI /.
|
||||
:- http_handler('/', say_goodbye, []).
|
||||
|
||||
% Defines the actual page content.
|
||||
% In this case we're returning a page with the title "Howdy" and the content,
|
||||
% wrapped in <h1></h1> tags, "Goodbye, World!".
|
||||
say_goodbye(_Request) :- reply_html_page([title('Howdy')],
|
||||
[h1('Goodbye, World!')]).
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
Class HTTPSock
|
||||
Inherits TCPSocket
|
||||
Event Sub DataAvailable()
|
||||
Dim headers As New InternetHeaders
|
||||
headers.AppendHeader("Content-Length", Str(LenB("Goodbye, World!")))
|
||||
headers.AppendHeader("Content-Type", "text/plain")
|
||||
headers.AppendHeader("Content-Encoding", "identity")
|
||||
headers.AppendHeader("Connection", "close")
|
||||
Dim data As String = "HTTP/1.1 200 OK" + EndOfLine.Windows + headers.Source + EndOfLine.Windows + EndOfLine.Windows + "Goodbye, World!"
|
||||
Me.Write(data)
|
||||
Me.Close
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Class HTTPServ
|
||||
Inherits ServerSocket
|
||||
Event Sub AddSocket() As TCPSocket
|
||||
Return New HTTPSock
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Class App
|
||||
Inherits Application
|
||||
Event Sub Run(Args() As String)
|
||||
Dim sock As New HTTPServ
|
||||
sock.Port = 8080
|
||||
sock.Listen()
|
||||
While True
|
||||
App.DoEvents
|
||||
Wend
|
||||
End Sub
|
||||
End Class
|
||||
|
|
@ -1,8 +1,4 @@
|
|||
#lang racket
|
||||
(require web-server/servlet
|
||||
web-server/servlet-env)
|
||||
|
||||
(define (start req)
|
||||
(response/xexpr "Goodbye, World!"))
|
||||
|
||||
(require web-server/servlet web-server/servlet-env)
|
||||
(define (start req) (response/xexpr "Goodbye, World!"))
|
||||
(serve/servlet start #:port 8080 #:servlet-path "/")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
$ include "seed7_05.s7i";
|
||||
include "listener.s7i";
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
var listener: aListener is listener.value;
|
||||
var file: sock is STD_NULL;
|
||||
begin
|
||||
aListener := openInetListener(8080);
|
||||
listen(aListener, 10);
|
||||
while TRUE do
|
||||
sock := accept(aListener);
|
||||
write(sock, "HTTP/1.1 200 OK\r\n\
|
||||
\Content-Type: text/html; charset=UTF-8\r\n\
|
||||
\\r\n\
|
||||
\<html><body>Hello, world!</body></html>\n");
|
||||
close(sock);
|
||||
end while;
|
||||
end func;
|
||||
Loading…
Add table
Add a link
Reference in a new issue