Escribir las siguientes partes de un programa que transfiere archivos vía TCP/IP
1) Escribir una función llamada load_conf() que tome un nombre de archivo (como cadena), lo abra y devuelva una estructura con los campos port, backLog y archStr que toma del archivo de configuración. El archivo tendrá el siguiente formato:
PORT=num BACKLOG=num ARCHIVOS=arch01.txt,arch02.txt,…
No se sabe cuantos archivos vienen, pero a los fines de esta función es una cadena a leer que tienen como máximo 1024 caracteres. Para este ejercicio no puede utilizar strtok(), realicé la separación dentro de la función.
2) Crear una función que reciba un listado de strings separados por comas y devuelva una estructura con un puntero a un vector de punteros a string y un entero indicando la cantidad de strings (archivos) que tiene el vector. El vector (creado por esta función) debe contener una puntero a cada string de la cadena. Para la realización de esta función puede utilizar strtok().
3) Realizar una función threadTransfer() que recibirá un entero representando un socket, un vector de strings y un entero con su tamaño. La función deberá abrir cada archivo dentro del vector y transferir su contenido. Una vez transferidos todos los archivos finalizará.
4) Crear el programa que lea la configuración (usando la función creada en 1) desde un archivo pasado como primer argumento del main. Luego llamar a la función initSocketS() (ya creada) que toma el port (provisto por la configuración) inicializando el socket a utilizar en este servidor. La función initSocketS() devuelve un entero que es el número de socket listo para ser utilizado en un accept(). Esta función se deberá quedar esperando hasta backLog conexiones. Cada vez que reciba una nueva conexión deberá crear un thread para manejar la transferencia. Realice además dentro del main todos los pasos que considere necesarios para finalizar el programa liberando todos los recursos utilizados.
5) Crear un programa cliente que llame a la función initSocketC() que no toma nada (pide la IP y puerto sola) y devuelve un socket ya abierto que se deberá utilizar para recibir datos. Estos datos recibidos se deberan guardar en el archivo recibido_pid.txt (deberá conseguir el process ID del cliente para esto).