hallo zusammen,
ich kommuniziere mit mit meinem server Programm (ob auf dem gleichen Rechner oder auf einem im Netzwerk ist egal) via Distributed Objects.
ich bin mir nur noch nicht so richtig im klaren über das error handling wenn der server unter der angegeben Adresse nicht zu finden ist oder schlicht nicht läuft.
im moment sieht mein code für den Aufbau der Verbindung so aus:
Alles anzeigen
ich fange den nicht laufenden server im @try ab. aber ich habe festgestellt das es eher Zufall ist das die Methode in den @catch Zweig springt.
oft bleibt das Programm einfach bei rootProxy = [connection rootProxy]; hängen und tut nix mehr. nicht mal eine Fehlermeldung kommt.
gibt es andere Lösungen einen nicht laufenden server abzufangen? wie löst ihr das problem?
viele grüße
sascha
ich kommuniziere mit mit meinem server Programm (ob auf dem gleichen Rechner oder auf einem im Netzwerk ist egal) via Distributed Objects.
ich bin mir nur noch nicht so richtig im klaren über das error handling wenn der server unter der angegeben Adresse nicht zu finden ist oder schlicht nicht läuft.
im moment sieht mein code für den Aufbau der Verbindung so aus:
Quellcode
- + (id) serverRootProxyWithAddress: (NSString*) anAddress andConnection: (NSConnection**) aConnection {
- BOOL success = YES;
- id rootProxy = nil;
- NSConnection *connection;
- NSString *address = (anAddress) ? anAddress : [preferences objectForKey:@"ServerIP"];
- NSSocketPort *port = [[[NSSocketPort alloc] initRemoteWithTCPPort:SERVER_PORT host:address] autorelease];
- connection = [NSConnection connectionWithReceivePort:nil sendPort:port];
- [connection enableMultipleThreads];
- [connection setReplyTimeout:10];
- if (connection) {
- @try {
- rootProxy = [connection rootProxy];
- } @catch (NSException *ne) {
- NSLog(@"NSDistantObject: Caught %@: %@", [ne name], [ne reason]);
- success = NO;
- } @finally { }
- } else {
- success = NO;
- }
- if (!success) {
- NSRunAlertPanel(@"Achtung!", @"Es wurde kein VIP Server gefunden.", @"Ok", nil, nil);
- [[NSNotificationCenter defaultCenter] postNotificationName:NOSERVERFOUND_NOTIFICATION object:nil];
- }
- if (aConnection && rootProxy)
- *aConnection = connection;
- return (success) ? rootProxy : nil;
- }
ich fange den nicht laufenden server im @try ab. aber ich habe festgestellt das es eher Zufall ist das die Methode in den @catch Zweig springt.
oft bleibt das Programm einfach bei rootProxy = [connection rootProxy]; hängen und tut nix mehr. nicht mal eine Fehlermeldung kommt.
gibt es andere Lösungen einen nicht laufenden server abzufangen? wie löst ihr das problem?
viele grüße
sascha
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von macuser ()