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

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