May be I'm wrong, but for me, it looks like you are freeing the memory
before assigning the variables like IP_CS.
You should free the memory, when you don't need it anymore.
printf("\nNow printing each saved string:\n");
for (jj=0; jj<ii;> printf("String %d: %s\n", jj, allwords[jj]);
free(allwords[jj]);
}
char * IP_CS = allwords[0];
char *IP_HMI = allwords[2];
char *IP_OBCU = allwords[4];
char *IP_ASR = allwords[6];
char *IP_RSO = allwords[8];
char *IP_RSO_D = allwords[10];
int PORT_CS = atoi(allwords[12]);
int PORT_HMI = atoi(allwords[14]);
int PORT_OBCU = atoi(allwords[16]);
int PORT_ASR = atoi(allwords[18]);
int PORT_RSO = atoi(allwords[20]);
int PORT_RSO_D = atoi(allwords[22]);
BTW: I hope this is just a short test program. Otherwise you should structure your code a bit more with functions like LoadSettings(), SetUpSockets() etc.