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.
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? –