The server listens for the address and port. For example, your server IP address is 10.0.0.1, and it listens on port 8000.
The IP address of the client is 10.0.0.2, and the client "connects" to the server with port 10.0.0.1 8000. In the TCP connection, you specify the port of the server to which you want to connect. Your client will indeed receive its own port number, but you do not control it, and it will be different for each connection. The client selects the server port to which it wants to connect, and not the client port from which it connects.
For example, the first time you connect, your client can get client port 12345. It connects from 10.0.0.2 port 12345 to the server 10.0.0.1 port 8000. Your server can see which port the client connects to by calling getpeername on its connection side.
When the client connects a second time, the port number will be different, say, port 12377. The server can see this by calling getpeername on the second connection - it will see a different port number on the client side. (getpeername also shows the IP address of the client.)
In addition, every time you call accept on the server, you get a new socket. You still have the original socket listening, and on each of them you get a new socket. Call getpeername on the received socket to find out which client port the connection is from. If two clients connect to your server, now you have three sockets - the original socket for listening and sockets for each of the two clients.
You can simultaneously connect 8000 clients to one server port at the same time. And many clients can be connected from the same client port (for example, port 12345), but not from the same IP address. From the same client IP address, for example. 10.0.0.2, each client connection to server port 8000 will be made from a unique client port, for example. 12345, 12377, etc. You can tell customers separately by their combination of IP address and port.
The same client can have several connections to the server at the same time, for example. one connection to client port 12345 and another to 12377 at the same time. By client, I mean the source IP address, not a specific software object. You will see two active connections having the same client IP address.
In addition, over time, the combination of client address and client port can be reused. That is, in the end, you can see that the new client comes in with 10.0.0.2 port 12345, long after the first client in 10.0.0.2 port 12345 is disabled.