Avatar billede susrn Nybegynder
04. februar 2004 - 11:40 Der er 21 kommentarer og
1 løsning

brugbar ping adresse

Hvilken adresse er bedst at bruge til at sende ping til?

Jeg har et program som for at tjekke om man er opkoblet sender et ping, men nogle adresser svarer ikke på ping.
Avatar billede repsak Nybegynder
04. februar 2004 - 11:49 #1
Nogle firewalls kan afvise ping, så derfor kan man ikke altid regne med dem.
kan du ikke bare forsøge dig frem? ping www.krullimutymer.com og hvis den ikke virker så prøv en anden :-)
Avatar billede susrn Nybegynder
04. februar 2004 - 12:13 #2
nej, programmet skulle gerne virke hver gang med hardcoded adresse.
Avatar billede riversen Nybegynder
04. februar 2004 - 12:14 #3
ping dns1.cybercity.dk svarer altid.
Avatar billede riversen Nybegynder
04. februar 2004 - 12:15 #4
du kan lave det i en bat fil, som erstatning for et program :-)
Avatar billede arne_v Ekspert
04. februar 2004 - 14:58 #5
Overvejet at bruge HTTP i.s.f. ICMP ?
Avatar billede susrn Nybegynder
04. februar 2004 - 18:49 #6
vil du forklare forskellen?
Avatar billede arne_v Ekspert
04. februar 2004 - 19:01 #7
HTTP er jo protokollen som normalt bruges til web brug og derfor
er der større sandsynelighed for at den kommer igennem diverse
firewalls end ICMP (ping).
Avatar billede riversen Nybegynder
04. februar 2004 - 19:05 #8
bliver lige nødt til at melde, at jeg ikke havde læst spørgsmålet ordentligt... ellers risikerer jeg vist at folk tror jeg er en tåbe med de kommentarer.
Avatar billede arne_v Ekspert
04. februar 2004 - 19:12 #9
riversen>

Din første kommentar er da et præcist svar på spørgsmålet.
Avatar billede susrn Nybegynder
04. februar 2004 - 19:23 #10
ja, og hvis I vil have point så læg svar istedet for kommentar, tak.
Men Arne, hvad kunne du foreslå istedet for ping?
Avatar billede arne_v Ekspert
04. februar 2004 - 19:28 #11
En HTTP request.

Lav en socket til www.microsoft.com port 80 og send "HEAD / HTTP/1.0\r\n\r\n".
Avatar billede arne_v Ekspert
04. februar 2004 - 19:29 #12
Jeg kan godt ligge et svar, men medmindre du skifter fra ICMP til HTTP, så
har jeg vel ikke fortjent noget.
Avatar billede arne_v Ekspert
04. februar 2004 - 19:31 #13
For at pinde det lidt ud. Det kan godt være at ping til www.microsoft.com
virker idag, men måske blokerer de ping imorgen. HTTP til www.microsoft.com
skal nok virke imorgen.
Avatar billede fangel Nybegynder
04. februar 2004 - 19:32 #14
yahoo.com svare på pings... (fx brugt i installations-bogen til Gentoo Linux for at tjekke om man er på nettet)

Morten
Avatar billede susrn Nybegynder
04. februar 2004 - 19:36 #15
du kunne jo lige give et kode eksempel, dem har du vel masser af?
Avatar billede arne_v Ekspert
04. februar 2004 - 19:49 #16
Følgende eksempel sender en HEAD request og printer enten resultat
eller en fejl meddelelse ud.

Den må kunne rettes til.
Avatar billede arne_v Ekspert
04. februar 2004 - 19:49 #17
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#include <windows.h>
#include <errno.h>

void get(char *hostname,int port,char *path)
{
  int sd,status,len,ix,tmp;
  char cmd[512],resp[51200];
  struct sockaddr local,remote;
  struct hostent *hostinfo;
  /* create socket */
  sd=socket(AF_INET,SOCK_STREAM,0);
  if(sd<0) {
      printf("Error creating socket: %s\n",strerror(errno));
      goto fin;
  }
  /* bind socket */
  local.sa_family=AF_INET;
  memset(local.sa_data,0,sizeof(local.sa_data));
  status=bind(sd,&local,sizeof(local));
  if(status<0) {
      printf("Error binding socket: %s\n",strerror(errno));
      goto fin;
  }
  /* lookup host */
  hostinfo=gethostbyname(hostname);
  if(!hostinfo) {
      printf("Error looking up host: %s\n",hostname);
      goto fin;
  }
  /* connect to host */
  remote.sa_family=hostinfo->h_addrtype;
  memcpy(remote.sa_data+2,hostinfo->h_addr_list[0],hostinfo->h_length);
  *((short *)remote.sa_data)=port;
  tmp=remote.sa_data[0];
  remote.sa_data[0]=remote.sa_data[1];
  remote.sa_data[1]=tmp;
  status=connect(sd,&remote,sizeof(remote));
  if(status!=0) {
      printf("Error connecting to host: %s port: %d\n",hostname,port);
      goto fin;
  }
  /* send HEAD request */
  sprintf(cmd,"GET %s HTTP/1.1\r\nHost: %s\r\n\r\n",path,hostname);
  status=send(sd,cmd,strlen(cmd),0);
  if(status<0) {
      printf("Error sending HEAD request\n");
      goto fin;
  }
  /* read response */
  ix=0;
  while ((len=recv(sd,resp+ix,sizeof(resp)-ix-1,0))>0) {
      ix = ix + len;
  }
  resp[ix]='\0';
  printf("%s",resp);
fin:
  closesocket(sd);
  return;
}

int main(int argc,char *argv[])
{
  WSADATA WSAData;
  WSAStartup(0x0101,&WSAData);
  get("www.microsoft.com",80,"/");
  WSACleanup();
  return 0;
}
Avatar billede arne_v Ekspert
04. februar 2004 - 19:50 #18
Den er til Windows, men kan rettes til for Linux ret nemt.

Og ja - der er lidt mange linier. Sockets er noget mere komplekse i
C end i Java/C#.

Hvis du bruger f.eks. Borland C++ Builder, så har de muligvis en HTTP
komponent, som kan gøre det betydeligt nemmere.
Avatar billede danielhep Nybegynder
05. februar 2004 - 12:44 #19
Når jeg skal pinge et eller andet, så plejer jeg at pinge enden dr.dk eller min egen loopback adresse.
Avatar billede arne_v Ekspert
16. februar 2004 - 21:54 #20
Tid at afslutte spørgsmålet ?
Avatar billede susrn Nybegynder
16. februar 2004 - 22:07 #21
samme problem
Avatar billede arne_v Ekspert
16. februar 2004 - 22:10 #22
Det lykkedees da vist ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester