iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   Hoe een WHOIS commando uitvoeren? (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/41835-whois-commando-uitvoeren.html)

Pixxa 16-08-09 23:31

Hoe een WHOIS commando uitvoeren?
 
Hee,

Ik ben bezig voor een applicatie voor mijzelf om ervan te leren maar loop tegen een probleem aan. Het is een applicatie waarin ik makkelijk en snel WHOIS informatie van domeinen kan opvragen. Nu is het probleem dat ik nog geen manier heb gevonden om daadwerkelijk een whois commando op de iphone uit te voeren. Heeft iemand hier een idee hoe ik dit voor elkaar zou kunnen krijgen? Moet ik bepaalde communicatie protocollen implementeren oid?

Als iemand hier meer over weet laat het me dan weten, bedankt alvast.

SkyTrix 17-08-09 09:27

De beste manier om dit te doen is via een API werken. Schrijf een PHP API o.i.d. die de WHOIS voor zijn rekening neemt. Deze roep je aan vanuit je applicatie met GET waarden. Zorg er dan voor dat je API de info bruikbaar teruggeeft. (bv. een json array)

Pixxa 17-08-09 09:30

Bedankt, ik heb al wel het eea gevonden om een connectie op te zetten:

Code:

- (void)sendcmd:(NSString*)cmd {
 
       
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *hostname= [defaults stringForKey:@"hostname"];
       
        NSHost *host=[NSHost hostWithName:hostname];
       
        if (host) {
       
    struct sockaddr_in addr;
    int sockfd;
 
    // Create a socket
    sockfd = socket( AF_INET, SOCK_STREAM, 0 );
 
       
       
        addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr([[host address] UTF8String]);
    addr.sin_port = htons( 2001 );
 
        int conn = connect(sockfd, &addr, sizeof(addr));
       
        if (!conn) {
       
                NSData* data = [cmd dataUsingEncoding:NSISOLatin1StringEncoding];
       
                ssize_t datasend = send(sockfd, [data bytes], [data length], 0);
                datasend++;
       
       
                //ssize_t        send(int, const void *, size_t, int) __DARWIN_ALIAS_C(send);
       
       
                close(sockfd);
 
        } else {
                // create a popup here!
               
                       
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[@"Connection failed to host " stringByAppendingString:hostname] message:@"Please check the hostname in the preferences." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];
                [alert release];
        }
               
        } else {
               
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[@"Could not look up host " stringByAppendingString:hostname] message:@"Please check the hostname in the preferences." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];
                [alert release];
        }
               
}

Maar ik heb dan nog geen manier om daadwerkelijk een string te versturen.

SkyTrix 17-08-09 09:43

Neem hier even een kijkje: Open Kosmaczewski - Objective-C REST Client (Objective-C, 2008)

Deze wrapper class gebruik ik voor mijn POST en GET requests. Je kan makkelijk parameters opgeven via een NSDictionary. Heeft ook mooie errorafhandeling.

Code is van 2008, werkt goed though. Ben wel even benieuwd wat anderen gebruiken om POST requests etc te doen. Laat t even weten :)

gekkepietje 17-08-09 10:06

Socket openen naar poort 43 op een WHOIS server voor die extensie, dan verstuur je de domeinnaam gevolgd door een newline, en vervolgens lees je het antwoord van de server. Probleem is dat zo'n beetje elke extensie een andere server heeft en het antwoord in een ander formaat terugstuurt.

Pixxa 17-08-09 10:10

Lijst met servers en de reacties heb ik. Probeer eerst een antwoord te krijgen van SIDN maar krijg nu nog terug 'only domains with within the NL tld are accepted'

Maar opzich krijg al antwoord!


Alle tijden zijn GMT +2. Het is nu 02:45.