====== Stabilire se un server tcp accetta connessioni su una data porta ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 09/01/2021 - 00:21 //** // //
La funzione ritorna 1 se il server accetta connessioni e 0 altrimenti.
===== Se il server non รจ localhost =====
Funziona anche su localhost. Sempre che il server accetti piu' di una connessione.
#include
#include
#include
#include
#include
int serverIsUp(const char* host, int port)
{
int sd;
struct sockaddr_in client;
struct hostent *hp;
hp = gethostbyname(host);
bzero(&client, sizeof(client));
client.sin_family = AF_INET;
client.sin_port = htons(port);
client.sin_addr.s_addr =((struct in_addr*)(hp->h_addr))->s_addr;
if((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
printf("Errore nella creazione del socket!\n");
else
printf("socket creato!\n");
if (connect(sd, (struct sockaddr *)&client, sizeof(client)) == 0){
printf("Server is UP!\n");
close(sd);
return 1 ;
}else{
printf("Server is DOWN!\n");
close(sd);
return 0;
}
}
===== Server su localhost =====
Da usare solo su localhost. Anche su server che accettano solo una connessione.
#include
#include
#include
#include
#include
int serverIsUp(int port)
{
struct sockaddr_in server;
int sd;
if ( (sd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
printf("Errore nella creazione del socket!\n");
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = INADDR_ANY;
if (bind(sd, (struct sockaddr *)&server, sizeof(server)) < 0)
{
printf("Server is UP!\n");
close(sd);
return 1;
}else{
printf("Server is DOWN!\n");
close(sd);
return 0;
}
close(sd);
}