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
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
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 :-)
Hmm, meine I/O Firmware ist gleichzeitig - HTTP Server - Telnet Server - DHCP Client - SMTP Client Also das geht schon. Vielleicht magst Du von dem abgucken. http://stefanfrings.de/avr_io/NET-IO-Modul.zip
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;
}
}
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.