# C++ und per Ethernet Daten versenden



## jupp2oo8 (22. Januar 2008)

Hallo Leute,
ich bin neu hier, habe mich etwas umgesehen, aber nicht so wirklich das gefunden, wonach ich suche.
Vielleicht hat jemand einen guten Tipp für mich ? ;-)

Also: Ich arbeite mit dem Borland C++ Builder 2007. (das ist hier aber wohl nebensächlich)

*Und möchte Daten per Ethernet (-Frames) versenden. *

Geht das? Und wo finde ich nähere Infos dazu, wie das geht? Bin (leider / noch) erst Anfänger-Programmiererin. 

Remember:
Man kann nicht alles können - aber man kann lernen, was man nicht kann!


----------



## Hillkorn (23. Januar 2008)

Also weisst du nocht nichts von Sockets  und dem Unterschied zwischen udp und tcp usw.
Weiß zwar nicht was du meinst "Und möchte Daten per Ethernet (-Frames) versenden. "

Aber guck dir mal die links hier an
http://www.robsite.de/daten/tutorials/sockdoc.pdf
dann hier bei tutorials.de den IRC clienten angucken

hatte mal noch mehr aber die find ich im mom leider nicht. Würde dir aber raten einfach per google nach socket und c++ zu suchen damit dürftest du fündig werden


----------



## Sinac (24. Januar 2008)

Klar geht das, warum auch nicht! Wirst aber wahrscheinlich Raw Sockets fuer brauche. Und ueber das Internet gehts natuerlich auch nicht, ist ja logisch. Google sollte jede Menge zu Raw Sockets unter C++ ausspucken. Trotzdem verstehe ich den Sinn nicht ganz. Waere vielleicht besser das ueber TCP/IP zu machen, wesentlich weniger Aufwand und Internetfaehig.

Greetz
Sinac


----------



## jupp2oo8 (24. Januar 2008)

Ja ich weiß mittlerweile, dass ich TCP benutzen möchte, um einfache Messages (wahrscheinlich Strings) zu versenden an einen anderen Netzwerk-Teilnehmer.
Kann ich dann zB TTCPClient bzw TIdTCPClient aus der Tool Palette benutzen?


----------



## Sinac (25. Januar 2008)

Ich weiss grade nicht genau wie die Kompenenten heissen bei Borland, glaube irgendwas mit TClientSocket und TServerSocket. Damit ist sowas sehr einfach zu realisieren, sowohl ueber TCP als auch UDP. In den Expmples sollte ein Beispiel fuer ein kleines Chat Program sein, das solltest du dir mal ansehen.


----------



## jupp2oo8 (25. Januar 2008)

Ja, diese Komponenten habe ich (aber es werden die Indy Clients/Server verwendet). Von dem Chat Beispiel hab ich gehört, leider gab es das wohl nur für den Builder 2006. Habe es mit dem Builder 2007 geöffnet, und da fehlen dann leider Komponenten, so dass es nicht funktioniert.
Wenn ich als Beispiel einen TCP Server und einen TCP Client Programm auf einem Rechner erstelle/laufen lasse, so dass sich der Client beim Server anmeldet, was müsste ich denn bei IP Adresse und Port Nummer einstellen?
(Alternativ könnte ich ja einen von beiden auf einem Rechner starten und die Rechner verbinden).
Bloß kenn ich mich noch nicht aus mit den IP Adressen und Ports. Muss ich die festlegen, kann ich die irgendwo auslesen oder wie oder was!?

Lieben Gruß an alle!
(Ich so als Frau könnte hierzu echt männliche Unterstützung brauchen  )


----------



## Sinac (25. Januar 2008)

Die Portnummer kannst du dir aussuche, sollte aber moeglichst nicht von 1-1024 sein, und der muss natuerlich auf beiden Systemen frei sein und auf beiden Systemen gleich. Nimm zum Beispiel 12345.
IP Adresse ist immer die Zieladresse fuer die Verbindung, die wirst du also hoechstwahrscheinlich zur Laufzeit angeben wollen, da du sie ja nicht vorher kennst. Die IP Adresse kannst du mit ipconfig (Windows) auslesen, macht allerdings nur im LAN Sinn. Ueber das Internet geht das z.B. ueber http://www.whatsmyip.de. Da sind dann aber eh noch andere Sachen zu beachten, z.B. Firewalls etc.

Schoene Gruesse aus Sydney...


----------



## jupp2oo8 (14. März 2008)

Also Server und CLient auf Rechner und Laptop haben sich zumindest schon mal erkannt irgendwie. Habe das mit den Adressen rausbekommen.

Aber nun will ich ja auch noch Messages hinundher schicken, die aus einem String bestehen, der aus mehreren Befehlen (getrennt durch Komma)  besteht.
Ich habe aber nuuuull Ideen, wie ich mehrere Befehle "zusammen setzen soll" zu einem String.

Weiß nicht jemand ein schlaues Buch, wo solche Übertragungsgeschichten mal näher erklärt werden?


----------



## Hillkorn (19. März 2008)

```
char msg[10];
         sprintf(msg,"-c,%d,%d",string1,string2);
         send(sock,msg,strlen(msg),0);
```

mit dem sprintf setzt du halt deine strings zu zusammen in ein char rein da nur char übertragen werden können

denke mal du weisst wie du sachen empfängst daher zeige ich dir nur mit einem beispiel wie du das emfangene auftrennen könntest

mit strtok kannst du einen char pointer auf einen char array teil zeigen lassen
Das heisst wenn du beim 2ten parameter ein "," suchen lässt dann zeigt er auf einen bereich von anfang bis zum , ohne aber auf die , zu zeigen
Um den nächsten teil zeigen zu lassen musst du statt der var dann NULL angeben ... dann zeigt er von einem , bis zum anderen , usw
Und am anfang überprüfe ich mit dem ersten if nur ob -c enthalten ist

```
if(strtok(buffer,"-c") != NULL) // buffer ist ein char was die empfangenen daten enthält
{
         char* result = NULL;
         result = strtok(buffer,"/");
         result = strtok(NULL,"/");
         string1 = result;
         result = strtok(NULL,"/");
         string2 = result;
}
```

Hoffe hab keine fehler gemacht beim erklären und beim code


----------

