Ich habe eine iPhone-Anwendung/ein Projekt geerbt, die eine Socket-Verbindung zu einem anderen Gerät öffnet (denke Web-Cam). Dies funktioniert gut, solange das Gerät über das WLAN-Netzwerk erreichbar ist. Wenn es jedoch nicht erreichbar ist, hängt die Anwendung "connect" aufrufen.Testen der Erreichbarkeit der IP-Adresse vom iPhone
(Fehler für Klarheit gezupft zu überprüfen.)
-(void)connect_to_control:(NSTimer*) timer
{
clientsock_fd = socket(AF_INET, SOCK_STREAM, 0);
int no_delay = 1;
setsockopt(clientsock_fd, IPPROTO_TCP, TCP_NODELAY, &no_delay, 4);
struct sockaddr_in the_addr;
memset((void *)&the_addr, 0, sizeof(the_addr));
the_addr.sin_family = AF_INET;
the_addr.sin_port = htons(25556);
const char* server_addr = "192.168.3.22";
unsigned long ip_addr = inet_addr(server_addr);
the_addr.sin_addr.s_addr = ip_addr;
int err_test = connect(clientsock_fd, (const struct sockaddr*)&the_addr, sizeof(the_addr));
}
Mein erster Gedanke zu "ping", war die Adresse, um zu sehen, ob es erreichbar ist. Bisher habe ich Apples "Reachability" -Stichprobe entdeckt, aber das bestimmt NICHT, ob eine Adresse erreichbar ist, nur wenn das Netzwerk erreichbar ist (außer im Simulator) und ein altes Apple-Beispiel "SimplePing", das Headerdateien verwendet, die nicht sind im iPhone SDK enthalten.
Ich habe Jahrzehnte C++/C# -Erfahrung, aber ich bin ein iPhone Noob versuchen, aus der kleinen Firma eines Freundes zu helfen, einige Sachen rechtzeitig für eine wichtige Messe zu debuggen. Danke im Voraus.
Diese Antwort bietet nicht wirklich die vollständigen Details, wie es geht. – corydoras