Encrypting a string of arbitrary size with a big integer I am currently writing Python script that initiates a secure handshake. I am kind of reinventing the wheel here, so that I can properly learn it.

Now, I have Diffie-Hellman mostly working from scratch, and both client and server has agreed on a key to use. This key is an integer of ~2048 bits (2047 most of the time. 2046 is the lowest I've seen). The question then is, which cipher do I chose for encryption data of arbitrary length with this key?

Also, when the client and the server later has exchanged public keys, is there any reason why I should/should rely on said public key encryption alone, and not use the above mentioned integer as well?
When you use Diffie-Hellman key agreement protocol, both sides reach the equal keys. Then, you can use it with private key encryption methods, not public ones (like AES or one-time-pad).

One philosophy of public key encryptions is for avoiding key exchanges or key agreements. They are also called asymmetric encryption methods, because the sender and the receiver of the messages have different keys.