2016-07-15 15 views
1

Ich greife nicht von einem anderen Netzwerk aus zu. Ich versuche nur, Dateien für eine Hybrid-App zu liefern.GDCWebserver serverURL ist null, wenn WLAN ausgeschaltet ist

läuft Gerade der grundlegende Server wie beabsichtigt funktioniert, wenn ich zu einem WiFi-Netzwerk verbunden bin unter dem Code:

let webServer = GCDWebServer() 

    webServer.addDefaultHandlerForMethod("GET", requestClass: GCDWebServerRequest.self, processBlock: {request in 
     return GCDWebServerDataResponse(HTML:"<html><body><p>Hello World</p></body></html>") 

    }) 

    webServer.startWithPort(8080, bonjourName: "GCD Web Server") 

    print("Visit \(webServer.serverURL) in your web browser") 

Protokolle:

Besuche http://192.168.1.132:8080/ in Ihrem Web-Browser

Wenn ich wifi fallen und starten Sie die App und Server bekomme ich:

GCDWebServer begann auf Port 8080 und erreichbar unter (null)

+0

Hat Ihr Gerät eine 3G/4G-Verbindung? Wenn nicht, dann hat es keine aktiven Schnittstellen, wenn WiFi ausgeschaltet ist. In der Theorie sollte die Loopback-Schnittstelle immer noch aktiv sein, aber GCDWebServer scheint keine Option zu haben, mit der Sie eine Schnittstelle angeben können. – Paulw11

+0

Guter Punkt. No 3g/4g auf dem Gerät. – yeahdixon

+0

Schlage vor, dass du den Titel des Posts umbenennst, um GCDWebServer für eine bessere Darstellung für dieses Q/A zu verwenden – DwarDoh

Antwort

1

serverURL null ist, aber gute ol lokalen Host funktioniert:

localhost: //

Auch erhältlich war die Bonjour Service URL, die serviert wird

func webServerDidCompleteBonjourRegistration(server: GCDWebServer!) { 

    if(self.serverURL == nil){ 
     self.serverURL=self.webServer!.bonjourServerURL 
     print(self.serverURL) 
     self.initWebView() 
    } 


} 

die Dinge laufen lokal mit Wifi aus.

0

Dies ist ein erwartetes Verhalten, obwohl die Dokumentation dies deutlicher machen könnte.

- (NSURL*)serverURL ist nur eine bequeme Methode, die die primäre IP-Adresse Ihres Geräts mit dem Server-Port zurückgibt. Wenn Ihr Gerät nicht mit einem Netzwerk verbunden ist, wird nil zurückgegeben. Siehe die Implementierung von GCDWebServerGetPrimaryIPAddress().

Wenn diese Methode zurückgibt, gibt nil zurück, das bedeutet entweder, dass der Server nicht ausgeführt wird oder keine externe IP hat, d. H. Er ist nur über localhost erreichbar.