winsock.h und timeout



  • Hallo,
    ich hab mich nach langer Zeit mal wieder an C gewagt (normalerweise benutze ich PHP, manchmal Perl) und ein Programm mir zusammen gebastelt:

    #include <stdio.h>
    #include <winsock.h>
    
    int ping(char *addr, int port ){
        int sock, count;
        struct sockaddr_in blah;
        struct hostent *he;
        char cgiBuff[1024];
        WSADATA wsaData;
    
        if(WSAStartup(0x101,&wsaData)){
            printf("Unable to initialize WinSock lib.\n");
            exit(1);
    	}
    
        sock = socket(AF_INET,SOCK_STREAM,0);
        blah.sin_family=AF_INET;
        blah.sin_addr.s_addr=inet_addr(addr);
        blah.sin_port=htons(port);
        if((he = gethostbyname(addr)) != NULL){
    	    memcpy((char *)&blah.sin_addr, he->h_addr, he->h_length);
    	}else{
            printf("konnte %s nicht aufloesen", addr);
    	    WSACleanup();
    	    return 0;
        }
    
        if (connect(sock,(struct sockaddr*)&blah,sizeof(blah))!=0){
            WSACleanup();
            /* printf("offline (%s)\n", addr); */
    	    return 0;
        }else{
            closesocket(sock);
            printf("online  (%s)\n", addr);
    	    WSACleanup();
    	    return 0;
        }
    }
    
    int main(){
    	while(1){
    		ping("google.de", 80);
    /* weitere hier */
    		printf("------------------------\n");
    	}
    
    	return 0;
    }
    

    soweit funktioniert das ganze, nur würde ich gern den timeout etwas geringer einstellen, also falls ein Host mal nicht "leben" sollte.

    Vielen Dank

    Nik



  • Dieser Thread wurde von Moderator/in Shade Of Mine aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • WSAAsyncSelect() bzw. select() dürfte dich evtl. interessieren...


Anmelden zum Antworten