Revision 1810
Date2025-12-16T16:13:21+01:00
Committerhb1003
Download
| """
Copyright 2025, University of Freiburg,
Chair of Algorithms and Data Structures.
Hannah Bast <bast@cs.uni-freiburg.de>
"""
import argparse
import socket
from pathlib import Path
class SearchServer:
"""
A very simple HTTP search server.
"""
def __init__(self, port: int):
"""
Initialize with given port.
"""
self.port = port
def run(self):
"""
Run the server loop: create a socket, and then, in an infinite loop,
wait for requests and do something with them.
"""
# Create server socket using IPv4 addresses and TCP.
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Allow reuse of port if we start program again after a crash.
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Say on which machine and port we want to listen for connections.
server_address = ("0.0.0.0", self.port)
server_socket.bind(server_address)
# Start listening
server_socket.listen()
if __name__ == "__main__":
# Parse command line arguments.
parser = argparse.ArgumentParser()
parser.add_argument("port", type=int, help="port to listen on")
args = parser.parse_args()
# Create and run server.
server = SearchServer(args.port)
server.run()
|