Witam
Mam napisać klienta, który będzie wyszukiwał po portach serwisy. Napisałem, ale zwraca tylko jeden serwis. I tutaj pojawia się problem, jak napisać, żeby wyszukał i wypisał wszystkie serwisy?
Z góry dziękuję za pomoc ;)
Mój kod:
int main (int argc, char *argv[])
{
int sockfd, n,pol, s;
int numer;
char recvline[MAXLINE +1];
char p;
struct sockaddr_in servaddr;
struct servent *sp;
if (argc != 3)
err_sys("Aby uruchomić podaj: klient <Adres IP> <port>");
s = atoi(argv[2]);
printf("port: %d \n",s);
if((sp = getservbyport(htons(s), NULL)) == NULL)
{
err_sys("Nie znaleziono portu");
}
if((sockfd = socket(AF_INET, SOCK_STREAM, 0))<0)
err_sys("Blad utworzenia polaczenia");
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = sp->s_port;
if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr)<=0)
err_sys_kom("Blad konwersji do adresu IP dla %s", argv[1]);
printf("%s - %s \n", sp->s_name, sp->s_proto);
pol = connect(sockfd, (SA*) &servaddr, sizeof(servaddr));
if (pol < 0)
{
err_sys_kom("Blad polaczenie z serwerem");
close(sockfd);
exit(-1);
}
else
str_cli(stdin, sockfd , 1);
exit(0);
}