Web server

Jednostavni Python http server

Ovde je prikazan vrlo jedan jednostavan http server korišćenjem standardne Python biblioteke.

Server:

# HTTP server - Ja sam server, a onaj koji mi se obraca je klijent
import socket

uticnica = socket.socket()       # Kreiranje socket-a ( prikljucka )
uticnica.bind(('', 8888))        # Povezivanje sa port-om
uticnica.listen(5)               # Max. broj zahteva u redu za cekanje je 5

print("Čekam zahteve na portu: ",8888)   # Log
while True:
    klijent, adresa = uticnica.accept()                             # Čekaj i prihvati novi zahtev
    zahtev = klijent.recv(1024)                                     # Preuzmi sadržaj zahteva
    print("Poziv sa adrese: ",adresa,"\n",zahtev.decode("utf-8"))   # Prikaži zahtev
    klijent.send(str.encode('HTTP/1.1 200 OK\r\n'))                 # Potvrda prijema zahteva,
    klijent.send(str.encode("Content-Type: text/html\r\n\r\n"))     # Tip odgovora
    klijent.send(str.encode("Pozdrav iz Beograda!"))                # Odgovor na zahtev
    klijent.close()                                                 # Prekini vezu sa korsinikom

uticnica.close()  # Zatvaranje server socket-a

Dodatne informacije o socket modulu možete da nađete u Standardnoj biblioteci

Jednostavni Node.js http server

Server:

var http = require('http');                         // Importuj http objekat

function Odgovor(request, response){                // Hendler zahteva
  response.end('Zahtevali ste: ' + request.url);   // Odgovor na zahtev
}

var server = http.createServer(Odgovor);            // Kreiraj server

server.listen(9999, function(){                     // Startovanje servera

  console.log("Čekam zahteve na: http://localhost: ", 9999);

});

Više informacija o Node.js http serveru možete da nađete u Node.js dokumentaciji

Malo složeniji Python web server

Server:

import http.server
Server = http.server.HTTPServer
BaseHandler = http.server.BaseHTTPRequestHandler

class Handler(BaseHandler):
        def _set_headers(self):
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()

        def do_GET(self):
            self._set_headers()
            self.wfile.write(str.encode("<html><body><h1>hi!</h1></body></html>"))

        def do_HEAD(self):
            self._set_headers()

        def do_POST(self):
            # Print posted data
            content_length = int(self.headers['Content-Length'])
            post_data = self.rfile.read(content_length)
            print (post_data)
            self._set_headers()
            html = "<html><body><h1>POST!</h1><pre>" +
           str(post_data.decode("utf-8")) + "</pre></body></html>"
            self.wfile.write(str.encode(html))


def run(server_class=Server, handler_class=Handler, port=8888):
        server_address = ('', port)
        httpd = server_class(server_address, handler_class)
        print ('Starting httpd...')
        httpd.serve_forever()

if __name__ == "__main__":
        from sys import argv

        if len(argv) == 2:
            run(port=int(argv[1]))
        else:
            run()

Dodatne informacije o http.server-u možete da nađete u Stanadardnoj biblioteci