|
Empezaremos haciendo una función que reciba una dirección de internet, es resolverla mediante la función gethostbyname (Aunque nos hayan introducido una dirección IP), pues de esa manera, hacemos mucho más independiente el programa.
El siguiente paso a ralizar, es crear un socket, con la función socket, que nos devolverá un entero; Este entero será el canal de comunicaciones que emplearemos. A esta función se le pasan tres parametros, el primero es en tipo de dirección (En nuestro caso AF_INET), el segundo es si será una conexión UDP o TCP (SOCK_STREAM en nuestro caso, que es una conexión TCP), y el tercer parámetro es el protocolo que se empleará en la conexión (Depende del primer parametro, en nuestro caso 0), de manera que nos quedaría:
sockfd = socket(AF_INET, SOCK_STREAM, 0);
Si nos devuelve un valor menor que 0, entonces no se ha podido abrir el canal de comunicaciones..
El siguiente paso es rellenar la estructura sockaddr_in, en la que pondremos los datos de la máquina a la que nos conectamos (Ponderemos el puerto, la dirección resuelta obtenida de gethostbyname, que nos conectamos a traves de la red Ip, e inicializaremos el resto a 0). Consultar el ejemplo al final de el artículo.
Y el último paso es la comunicación en si misma. Esta depende del protocolo utilizado. En caso del protocolo SMTP, El cliente manda una línea (Acabada en el caracter de salto de línea), y el servidor responde con otra, salvo qu el cliente haya enviado la instrucción data.
Una vez terminada la comunicación, es MUY importante cerrar las comunicaciones, para lo que emplearemos la función shutdown, en la que le especificaremos el socket a cerrar, y lo que queremos que cierre (En nuestro caso, 2, que es que cierre totalmente el canal) |