udp/tcp webserver

OP #3436915
Lesenswert?
• ▲
▼
Ich benutze den U-Radig-Webserver mit einem Atmega 1284. Ziel ist im 
Prinzip Übertragung von Steuerbefehlen, zur Zeit nur UDP. Folgendes 
Problem ist aufgetreten:

Den ENC-Eingangsport habe ich per add_udp_app in die Anwendungsliste 
eingetragen.

Ich schicke eine UDP-Sequenz mit IP/Eingangsport an den Atmega.

Die Funktion eth_get_data() wertet die einkommenden Daten aus. Die 
Funktion
check_packet() leitet eingehende UDP-Daten an die Funktion
1
//Diese Routine verwaltet die UDP Ports
2
void udp_socket_process(void)
3
{
4
  unsigned char port_index = 0;  
5
  struct UDP_Header *udp;
6
    
7
  udp = (struct UDP_Header *)&eth_buffer[UDP_OFFSET];
8

9
  //UDP DestPort mit Portanwendungsliste durchführen
10
  while (UDP_PORT_TABLE[port_index].port && UDP_PORT_TABLE[port_index].port!=(htons(udp->udp_DestPort)))
11
  { 
12
    port_index++;
13

14
DEBUG("\r\nport   %1i.%1i\r\n",port_index, UDP_PORT_TABLE[port_index].port);
15
DEBUG("\r\nhtons   %1i.%1i\r\n",udp->udp_DestPort,htons(udp->udp_DestPort) );
16
    
17
    
18
  }
19
  
20
  // Wenn index zu gross, dann beenden keine vorhandene Anwendung für den Port
21
  if (!UDP_PORT_TABLE[port_index].port)
22
  { 
23
    //Keine vorhandene Anwendung eingetragen! (ENDE)
24
    DEBUG("UDP Keine Anwendung gefunden!\r\n");
25
    return;
26
  }
27

28
  //zugehörige Anwendung ausführen
29
  UDP_PORT_TABLE[port_index].fp(0); 
30
  return;
31
}
 weiter.

Wenn ich verschiedene Ports durchprobiere, werden die ports über die 
Funktion htons() richtig angezeigt. Wenn ich aber den Port ansteuere, 
der in der Anwendungstabelle gelistet ist, wandelt htons den Wert 6121 
in 6120 um. Der Wert für den Port wurde offenbar vorher im Programm 
geändert. Auf diese Weise wird die dem Port zugewiesene Anwendung nie 
angesprochen.

Warum? Was mache ich falsch? Bin für jeden Hinweis dankbar.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.