That's what happens: After the client sends some messages, it gives ConnectionAbortedError: [WinError 10053] and the server keeps running
Images:
Here's my server code:
from socket import *
def server(address, port):
    sock = socket(AF_INET, SOCK_STREAM)
    sock.bind((address, port))
    sock.listen(10)
    while True:
        clientsock, addr = sock.accept()
        ip, _ = addr
        msg = input('YOU: ')
        clientsock.send(bytes(msg, 'utf-8'))
        data = clientsock.recv(2048)
        print('%s - ' % ip, data.decode('utf-8'))
        if not data:
            break
        clientsock.shutdown(SHUT_WR)
        clientsock.close()
    sock.close()
if __name__ == '__main__':
    server('192.168.0.101', 5000)
Client:
from socket import *
def client(address, port):
    sock = socket(AF_INET, SOCK_STREAM)
    sock.connect((address, port)) #0.0.0.0 isnt valid
    while True:
        data = sock.recv(2048)
        print('%s - ' % address, data.decode('utf-8'))
        msg = input('YOU: ')
        sock.send(bytes(msg, 'utf-8'))
    sock.close()
if __name__ == '__main__':
    client('192.168.0.101', 5000)
