Kleines Problem mit AsyncUdpSocket beim Empfangen von Daten nach dem Verbinden mit Broadcast anstelle von Server

8

Ich habe ein Problem mit AsyncUdpSocket.

Ich habe mich mit einem Server verbunden, einige Daten gesendet und eine Antwort bekommen. Jetzt, da ich die tatsächliche Adresse des Servers nicht kenne, musste ich meinen Code ändern und die Daten an die Broadcast-Adresse 255.255.255.255 senden.

Hier ist mein Code:

%Vor%

Das Problem ist also, dass es mit "host" arbeitet, aber nicht mit "bchost". In beiden Fällen sehe ich auf der Serverseite, dass die Daten empfangen werden und die Antwort an die Adresse des Absenders gesendet wird (was das iOS-Gerät sein sollte), aber auf dem Gerät erhalte ich die Daten nicht, wenn ich sie an bchost sende.

Irgendeine Idee, was ich vermisse?

    
eemceebee 26.04.2011, 12:16
quelle

4 Antworten

4

Ok, leider funktionieren alle Antworten nicht für mich, aber ich fand die Lösung schließlich;)

%Vor%

Wenn sich dahinter ein Server befindet, wird eine Antwort ausgelöst und dies ermöglicht auch, die IP vom Server zur weiteren Verarbeitung zu bekommen.

    
eemceebee 07.10.2011, 09:14
quelle
3

Sie verbinden sich mit dem Host. Laut der Unix-Socket-FAQ erhalten Sie nur UDP-Pakete zurück, die eine Quell-IP-Adresse von 255.255 haben .255.255. Connecting stellt eine 1-zu-1-Beziehung für UDP her, so dass empfangene Pakete, deren Quelladressen sich von der verbundenen Adresse unterscheiden, gefiltert werden.

Wenn Sie keine Verbindung herstellen (Sie müssen Ihre Sendeleitung ändern, um die Broadcast-Adresse anzusprechen), sollte es funktionieren. Sie senden toHost:bcHost - und dann sollte Ihr Empfang alle Pakete erhalten, die für seinen Port bestimmt sind.

    
Arthur Shipkowski 14.06.2011 22:09
quelle
3

Basierend auf Arthurs Antwort, hier ist der Arbeitscode. Ich frage mich, ob Empfang sollte vor dem Senden beginnen, nur um sicherzustellen, dass wir nicht eine sehr schnelle Antwort verfehlen, bevor Empfang bereit ist, aber bis jetzt scheint es nicht notwendig in meiner Situation. Siehe auch diesen Post zum Erstellen von Empfangsmethoden.

%Vor%     
Alex 07.10.2011 03:12
quelle
0

Ich könnte komplett verrückt sein, aber es scheint, dass dies ein Problem mit AsyncUdpSocket auf iOS ist.

Auf ihrer Google-Codepage gibt es mehrere ähnliche und sogar identische Fehlerberichte. Leute haben sich beschwert, dass sie Udp-Pakete nach dem Senden nicht empfangen können, und in einigen Fällen sogar überhaupt.

Ссылка

    
jgriego 14.06.2011 03:12
quelle

Tags und Links