Si estás empezando en sockets, un e-mail no es el mejor comienzo. Los sockets envían datos, vale. Pero para enviar e-mail, o peticiones HTTP, hay que utilizar diversos protocolos más o menos complejos. Puedes hacerlo, sí, pero me parece un comienzo muy bruto.
Yo de ti, empezaba conectando un cliente y un servidor (tuyos ambos), por ejemplo. Que interactuen como quieras.
Después de eso, podrías echarle un ojo al protocolo HTTP, para pedir páginas web (o incluso, servirlas). Es un protocolo bastante sencillito, en texto plano completamente, así que no te daría problemas.
Perdona por no haber respondido la respuesta principal, pero considero bastante más sencillo el protocolo HTTP:
https://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Ejemplo_de_di.C3.A1logo_HTTPSobre códigos de ejemplo, no tengo ninguno explicado, pero Microsoft sí (suponiendo que utilices sockets en Windows).
Cliente:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms737591(v=vs.85).aspxServidor:
https://msdn.microsoft.com/es-es/library/windows/desktop/ms737593(v=vs.85).aspxEsos códigos tienen un montón de manejo de errores, y es por eso que pueden parecer densos, pero no lo son realmente. El mayor problema de los sockets en sí es, especialmente, crearlos. Yo recomendaría hacer una función para crear el socket y evitar tener todo ese código donde peuda molestar.