# Python, create a TCP server

> Learn how to create a TCP server in Python using the socketserver package with TCPServer and a request handler, then test it with the Netcat nc command.

Author: Flavio Copes | Published: 2021-02-11 | Canonical: https://flaviocopes.com/python-tcp-server/

The [Python standard library](https://flaviocopes.com/python-standard-library/) provides the `socketserver` package. We can use that to create a TCP server.

```python
from socketserver import BaseRequestHandler, TCPServer

class handler(BaseRequestHandler):
    def handle(self):
        while True:
            msg = self.request.recv(1024)
            if msg == b'quit\n':
                break
            self.request.send(b'Message received: ' + msg)

with TCPServer(('', 8000), handler) as server:
    server.serve_forever()
```

Connect to this using Netcat, a handy utility that is very useful to test-drive TCP and UDP servers. It's installed by default on Linux and macOS, available under the `nc` command:

`nc localhost 8000`

Once it's connected to the server, you can send any message by typing it. The server will reply with a confirmation of the message received.

Until you say `quit`. Then the connection will close (but the server will still run, you can connect again)

![Terminal showing netcat connecting to Python TCP server, sending messages hi and test, receiving confirmations, then quitting](https://flaviocopes.com/images/python-tcp-server/Screen_Shot_2020-11-15_at_17.52.31.png)
