When using C# and TCP, what is the best approach to let a client identify himself using a username and password and then allow multiple packets to be sent from the server to the client and from the client to the server without sending the username & password each time? Thread for each user? Token that's sent with each packet?
Also, how to make sure that only the client is able to read the data that the server is sending & vice versa? Just using SSLStream?