Witam,
Muszę napisać program, który w pętli będzie łączył się po UDP z 100 adresów IP (od 10.0.7.1 do 10.0.7.100), pobierał z każdego XML i wpisywał go do bazy MySQL.
Na razie zawiesiłem się na pętli, która powinna co kilka sekund łączyć się po kolei z każdym adresem, nie mam problemów, gdy jest jedno IP, ale nie wiem już jak określić 100 takich adresów (bez 100 zmiennych ;))
Kod wygląda tak:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int sock, i, j=1, buffsize = 1024;
struct sockaddr_in server_addr;
struct hostent *host;
char send_data[1], *recv_data = malloc(buffsize);
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
perror("socket");
exit(1);
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(6666);
sprintf(send_data, "\0");
while (1)
{
host = (struct hostent *) gethostbyname((char *) "127.0.0.1");
server_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(server_addr.sin_zero),8);
sendto(sock, send_data, strlen(send_data), 0, (struct sockaddr *)&server_addr, sizeof(struct sockaddr));
if (recv(sock, recv_data, buffsize, 0) == -1)
perror("recvfrom()");
printf("Received data: %s\n\n", recv_data);
sleep(2);
}
}
Mógłby mi ktoś podpowiedzieć jak zapisać te 100 adresów i po nich iterować? W sumie to zapisać głównie, dalej powinienem sobie poradzić. Program musi działać w nieskończoność, dlatego nie ma return itp. ;)