UDP-Server mit OpenMCP

Gast #2393308
Lesenswert?

Hallo,
ich hänge gerade ein bißchen an den Innereien von OpenMCP und möchte 
mich mal umhören, bevor ich das Rad mangels Wahrnehmung neu erfinde... 
:(


Ich möchte unter OpenMCP (Pollin AVR-NetIO mit ATmega644) die NetBIOS 
Namensauflösung implementieren. Speicher ist momentan nicht das Problem, 
sondern das API.
Ich habe einen UDP-Server (UDP_ListenOnPort()). Dieser prüft zyklisch, 
ob neue Daten angekommen sind (UDP_GetByteInBuffer()), strikt sein 
Antwortpaket und schickt es zurück an den Empfänger.
Und genau das ist mein Problem: Die Sende-Funktion im Stack 
(UDP_SendPacket()) sendet zurück an die Adresse, welche in der 
socket-Struktur hinterlegt wird. Die Initialisierung der Struktur 
erfolgt am Anfang mit ListenOnPort(). Wie finde ich beim Empfang heraus, 
von wem das Paket kommt? Der UDP-Header wird auf den 1. Blick beim 
Empfang nicht abgespeichert (udp()). Der Eth-Puffer ist beim Pollen 
(THREAD_xxx) je nicht mehr unbedingt aktuell.

Übersehe ich etwas? Mache ich etwas grundsätzlich falsch?
Wie ist denn das Konzept gedacht?

MfG Andy
Gast #2393353
Lesenswert?

Yep, stimmt! ;)
Danke für den Hinweis!

Das heißt dann im Umkehrschluß, daß ich den Socket nach jedem Empfang 
komplett schließen muß (CloseSocket()), weil ja die Initialisierung 
nicht zurückgesetzt wird auf generellen Empfang.
In den Tiefen des Stacks möchte ich von der Server-App nicht 
heruminitialisieren. Wäre zwar technisch möglich, aber irgendwie 
unschön.  :)

Nochmals Danke!
Andy
Gast #2393370
Lesenswert?

Ops, da gibt es wohl mittlerweile eine neue Version von OpenMCP.
Mein Code hat die Funktion noch nicht - ist auch schon 1 Jahr in Arbeit 
(bzw in der Schublade). Sollte aber schnell nachgerüstet sein.
Gast #2393386
Lesenswert?

ich hatte das im April vom SVN ausgecheckt, habe aber auch nicht viel 
damit gemacht, ausser es auf dem NetIO zum Laufen zu bekommen.
Aber das BackToListen braucht man evtl. gar nicht, wenn für die UDP 
Bearbeitung ein Callback registriert ist werden nach dem Callback Aufruf 
in udp() die Destinationfelder auch schon rückgesetzt. So eine echo 
Anwendung müsste also ad Hoc funktionieren (ein Beispiel für die udp 
Nutzung habe ich in apps/CAN gesehen).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren