2016-09-29 3 views
0

Ich habe eine sehr einfache TCP-Client/Server-Implementierung mit GCDAsyncSocket (7.5.0) und ich verwende NSNetService für Service Discovery. Es wird nur auf einem lokalen WLAN-Netzwerk verwendet und es funktioniert für 2 Jahre ohne Probleme (nur um zu sagen: Ich habe eine ordnungsgemäße Verwendung von GCDAsyncSocket).GCDAsyncSocket-Client/Server funktioniert nicht über iOS-Zugriffspunkt

... Bis ich versuchte, ein drittes iOS-Gerät als Zugangspunkt zu verwenden, der das WLAN-Netzwerk zur Verfügung stellt, mit dem der Client und der Server verbunden sind.

Gleiches, wenn das dritte iOS-Gerät Client und Server verbindet, indem es seine Verbindung über Bluetooth teilt.

Der Service Discovery ist in Ordnung, aber wenn ich die IP-Adresse und Port, kann ich keine Verbindung herstellen und diese Fehlermeldung erhalten:

Error Domain=NSPOSIXErrorDomain Code=64 "Host is down" UserInfo={NSLocalizedDescription=Host is down, NSLocalizedFailureReason=Error in connect() function}

versuchte ich zu IPv4 und IPv6 zu beschränken (beide vorgesehen sind, durch die Service Discovery), habe ich auch versucht, den ipv6 Git-Zweig des GCDAsyncSocket-Repository und verschiedene Parameter zu verwenden.

Meine primäre Frage ist: Ist eine einfache TCP-Verbindung über einen WLAN oder Bluetooth iOS Access Point möglich, wenn ja wie?

Meine zweite Frage ist: Warum funktioniert die NSNetService Service Discovery und nicht die einfache TCP-Verbindung? Ich weiß, dass die Protokolle nicht vergleichbar sind, aber trotzdem verwirrt es mich.

Antwort

1

Es klingt für mich, dass Ihr Problem in der Verbindung aus dem Mobilfunknetz liegt. Wenn es mit dem Zellennetzwerk verbunden ist, verursacht es Probleme mit der IP-Adresse. Beziehen Sie sich auf diese Diskussion von Cocoaasyncsocket Github page.

+0

Ja, es klingt so. Ich wünschte, ich könnte einen Workaround finden, um die Verbindung herzustellen, aber es ist immer noch nicht klar, ob und wie ich das erreichen könnte: Wenn ich die IP meines Servers nicht finden kann, wie könnte ein Client sich damit verbinden? –

Verwandte Themen