webserver datenaustausch tcp udp telnet

OP #3366037
Lesenswert?
• ▲
▼
ich möchte mit dem Radig-Webserver Daten austauschen, d.h. kurze 
Byte-Sequenzen im lan übertragen. Der enc28j60 läuft über einen Atmega 
1284. Die avr-webside wird auf dem PC angezeigt.

Datenaustausch funktioniert nach meiner bisherigen Kenntnis so, daß 
frames über den stack an den enc gesendet werden. Der enc überträgt sie 
dann ins Netz. Es gibt ein ARP-Tabelle, in der Requests eingetragen und 
abgearbeitet werden.

In dem äußerst umfangreichen code befinden sich die Dateien
-tcpcmd
-tcpsrv
-telnet
-telnet,
die offenbar für den Datenaustausch gedacht sind.

Was mir fehlt ist ein praktisches Anwendungsbeispiel.

Ich möchte als Anfang per
command_ping/tcpcmd ein ping an den pc senden

Wie geht das? Wer kann weiterhelfen?
OP #3368419
Lesenswert?
• ▲
▼
vielen Dank für die breite Unterstützung. Es gibt eine Ergänzung zum 
Programm von UR von Dietmar Misch, der das UDP-Problem wie fogt lößt:
1
//Senden der aktuellen Daten zu einen UDP Server
2
void udp_send (unsigned long UDP_IP_SEND)
3
{
4
#if (UDP_SENDE_PORT!=0)  
5
  //oeffnet eine Verbindung zu einem UDP Server
6
  unsigned int byte_count,var=0;
7
    
8
  //ARP Request senden
9
  if (arp_request(UDP_IP_SEND) == 1)
10
  {  
11
    for (byte_count = 0;byte_count<(MAX_VAR_ARRAY*2);byte_count=byte_count+2)
12
    {
13
      eth_buffer[UDP_DATA_START + byte_count]   = (unsigned char)var_array[var];
14
      eth_buffer[UDP_DATA_START + byte_count+1] = (unsigned char)((var_array[var]) >> 8);
15
      var++;
16
    }
17
    create_new_udp_packet(byte_count,UDP_EMPFANGS_PORT,UDP_SENDE_PORT,UDP_IP_SEND);
18
    UDP_DEBUG("** UDP Daten gesendet! **\r\n");
19
    return;
20
  }
21
  UDP_DEBUG("Kein UDP Server gefunden!!\r\n");
22
#endif  
23
  return;
24
}
Gast #3437788
Lesenswert?
• ▲
▼
Der Datenaustausch per udp funktioniert jetzt. Nun möchte ich das ganze 
auf tcp umstellen.

Gibt es eine vergleichbare fertige Funktion wie
void udp_send (unsigned long UDP_IP_SEND)
{....

für tcp?
#3437832
Lesenswert?
• ▲
▼
Das wird schwierig.

UDP ist ein verbindungsloses Protokoll. Das Frame wird gesendet und 
damit ist es gut. Es gibt keine Garantie, dass es ankommt, keine 
Bestätigung.

TCP ist verbindungsorientiert, mit allem Schnickschnack, Verbindung 
aufbauen, Daten senden, Bestätigung empfangen, Timeout, Resync bei 
Problemen usw.

Im Radig Server sind TCP Funktionen rudimentär vorhanden, auf Grund des 
sehr kleinen RAM aber mit vielen Einschränkungen. Du wirst wohl oder 
übel selbst Hand anlegen müssen.

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.