uIP-Stack: Gleichzeitig Server & Client

Gast #3873790
Lesenswert?

Hallo zusammen,

ich hoffe ich bin hier richtig ung ihr könnt mir helfen.
Ich habe ihr auf einem ARM Cortex-M3 den uIP-Stack am laufen.
Die Beispieldemo mit dem Webserver funktioniert auch.
Nun sollen aber mehrere Boards untereinander Daten austauschen können.
Also habe ich mir gedacht zum Webserver einen eigenen "Datenserver" auf 
einen anderen Port einzurichten und gleichzeitig auch einen Client, der 
auf einem anderen Port Daten abholen kann.
Aber irgendwie bekomme ich nicht mal hin, dass ich den Webserver und 
einen Client parallel laufen habe. Letzteres soll erstmal einen 
Verbindung zu einem anderen (Web)Server aufmachen.
Es läuft aber weder das eine, noch das andere. Einer allein hingegen 
funktioniert.
Kann mir jemand sagen, wie ich einen Client und (zwei) Server parallel 
unter uIP-Stack betreiben kann?

Vielen Dank für die Hilfe und viele Grüße
Martin
Gast #3876218
Lesenswert?

Ich kenne zwar den MicroIP-Stack nicht wirklich, aber verwendest du für 
den server und client zwei unterschiedliche Ports, weil auf einem 
Funktionierts sicher nicht.

Versteh mich bitte nicht falsch, ich will dir damit nicht unterstellen 
dass du dich nicht auskennst, sonder meistens liegen die Probleme an den 
simpelsten Sachen
Gast #3876412
Lesenswert?

Da gibts die uip App funktion...

dort ist zb Der empfangsport(http 80)dort definiert.

Du müsstest dort deinen Port und deine Funktion einfügen.
Senden geht ja über das uip_send


So gesehen ist der uip nicht universell genug..
Ich habe mir daraufhin einen selbst zusammen gestoppelt.
Watterott arm webradio, lwip, opentcp Usw..

Am Ende ist ein für mich ganz brauchbares Stück SW rausgekommen...

Das gute... Ich verstehe ip besser :-)
Gast #3877680
Lesenswert?

ja das meinte ich ja ...
gibt sogar 2 UIP_APPCALL funktionen

irgendwo steht das:

#define UIP_APPCALL uip_appcall
und
#define UIP_UDP_APPCALL udp_appcall


da drin sagst du auf welchen PORTs er lauschen soll

void uip_appcall(void) {
    struct application_state *app_state = (struct application_state *) 
&(uip_conn->appstate);

    switch( HTONS(uip_conn->lport) ) {
       case 80: // HTTPD
          break;

       case 123: // SNTP
          break;

       case 456: // blahh
          break;

    }
}

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