online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon Ralf79 vom 10.07.2020, 16:34 Options

Sockets im Turbo C++ ?!

Hallo,
bin gerade echt am verzweifeln ... versuche jetzt schon seit mehreren Tagen eine Kommunikation über Sockets im Turbo C++ Builder 10 zu konstruieren.

Laut der Hilfe (in der alles wirklich nur sehr grob beschrieben ist) soll man TTcpClient und TTcpServer nutzen, dort wird die Kommunikation über Sockets aber in 6 Sätzen abgetan und beim googlen zu diesen Objekten finde ich wirklich rein gar nichts ... nur ein paar Beispiele in Delphi.

Hat schonmal jemand was mit Sockets gemacht und kann mir erklären wie das funktionieren soll oder hat vielleicht sogar ein Beispielscript?

Der Server hat z.B. kein Ereignis OnReceive und ich kann ihn einfach nicht dazu zu bewegen mittels Receiveln Daten aufzunehmen egal wie ich es anstelle. Ich starte die Anwendung und verbinde mich per Telnet auf localhost und den Port 12345 die Verbindung wird aufgebaut aber es kommt einfach nichts an.

Ich habe es zum Beispiel so versucht:
AnsiString string;
while(1==1)
{
  this->TcpServer1->WaitForData(4000);
  this->TcpServer1->Receiveln(string);
  this->Memo1->Lines->Append(string);
}


Hoffentlich kann mir wer weiter helfen ...
Grüße,
Ralf


Antwort schreiben

Antwort 1 von Jaja vom 10.07.2020, 16:53 Options

uhh ja sockets ;)

also ich meine sockets im sinne von POSIX. wie das mit der winAPI läuft kann ich dir aba nicht sagen.. allerdings kannst du die POSIX konformität mit dem paket "unix services for windows" herstellen oder per cygwin bibliothek auf die win api umbiegen.

naja jedenfalls gibts zum thema sockets (posix) sehr viel im netz zu finden, schau z.b. die orginalseite oder besser ein kleines HowTo

wie gesagt, für die winsockets kann ich dir nix sagen..

rumwienum sind sockets (win oder POSIX) sowieso komplett veraltet - heute nimmt man RPC für die interprozesskommunikation auch über rechnergrenzen hinweg..

schau hier oder hier

wikipedia: RPC

nimm dat mit dem rpc - da machste dir die sache einfacher..

Antwort 2 von Ralf79 vom 10.07.2020, 20:46 Options

Hallo, danke für deine Antwort.

UNIX-Sockets nachinstallieren wollte ich eigentlich nicht, aber mit den Windows Sockets komme ich auch nicht weiter. Verstehe eh nicht warum es im Internet sowenig über Sockets mit C++ gibt.

Mit dem RPC komme ich auch nicht weiter, die Sachen die ich bis jetzt gefunden haben erfordern alle eine Client Installation und ich habe keine Adminrechte. Wenn ich das richtig verstehe müsste DCE ja schon unter jedem Windows System installiert sein, aber wie kann ich DCE RPC unter WinXP32 nutzen? DCOM?

Zitat:
nimm dat mit dem rpc - da machste dir die sache einfacher..


Versuche jetzt schon wieder seit 3 Stunden ... "einfacher" ist wohl eine Frage der Definition. ;)

Eigentlich sollte man denken, dass es eine idiotensichere Methode für simple Netzwerkkommunikation unter Windows gibt.

Antwort 3 von Jaja vom 10.07.2020, 20:58 Options

Zitat:
Wenn ich das richtig verstehe müsste DCE ja schon unter jedem Windows System installiert sein, aber wie kann ich DCE RPC unter WinXP32 nutzen?


#include <rpcdce.h>

sollte reichen - ne richtig schöne anleitung hab ich aba auch nich gefunden..und noch nie benutzt ;)

Zitat:
DCOM?


was willst du eigentlich machen? mit dcom kannst du ganze objekte über den äther schicken - mit rpc rufst du funktionen auf nem anderen rechner auf (etwaige daten als parameter). also so ungefähr..

die sockets nimmst u an sich, wenn du wirklich nur raw daten schicken willst, aber das braucht man eher selten, denn normalerweise willst du "drüben" die daten ja weiterverarbeiten -> nimmst gleich rpc, oder speichern -> nimmst gleich datenbankanbindung.

der einsatzzweck und die daseinsberechtigung für sockets schwindet so also auf ein minimum ;)

Antwort 4 von Ralf79 vom 10.07.2020, 21:10 Options

Ich muss eigentlich nur kleine Befehlsstrings übers Netzwerk schicken. Ohne Verschlüsselung einfach strings senden am Empfänger (Server) aufnehmen verarbeiten und einen Befehlsstring zurücksenden. Zudem brauche ich einen Server der mehrere Client-Verbindungen verwalten kann.
Eigentlich müsste das mit Sockets gut funtkionieren ... gewusst wie natürlich vorausgesetzt. Datenbank ist eigentlich wegen erforderlicher Datenverarbeitung und Rückantwort ungeignet denke ich.

Und RPC hab ich ja gerade erst kennengelernt ... keine Ahnung wie gut das damit funktioniert.

Antwort 5 von Ralf79 vom 10.07.2020, 21:13 Options

hmmmm....

#include <rpcdce.h>



Zitat:
[C++ Fehler] rpcdce.h(54): E2238 Bezeichner '__RPC_FAR' mehrfach deklariert
[C++ Fehler] rpcdce.h(53): E2344 '__RPC_FAR' bereits deklariert


Was sagt mir das denn? :(

Antwort 6 von Jaja vom 10.07.2020, 21:25 Options

..das sagt dir das vermutlich eine anderer header-file die rpcde bereits eingebunden hat oder besser die selbe funktionalität bietet (wenn es nochmal eingebunden wird soll die prüfung #ifndef solche fehler verhindern)

schon komisch irgendwie - aber anscheinend kannst du die funktionen bereits nutzen..?!

naja - also rpc wäre ansich schon genau das richtige, denn du sendest ne befehlsfolge und erwartest eine antwort:

klingt nach einem funktionsaufruf mit rückgabewert - nur hier liegt die funktion eben per rpc auf nem anderen rechner.. du siehst das is eigentlich genial, ne?!

naja - frag mich aba nicht nach den funtionen von diesem dce rpc ansich.. ich hab nur mal xml-rpc unter unix genutzt.

also hier kannst mal in die headerfile schauen, und hier die alternative aus dem wine projekt... die funktion sollte identisch sein, evtl. hilft dir das.

unter win heißt die dce rpc übrigens msrpc

Antwort 7 von Ralf79 vom 10.07.2020, 22:34 Options

Ja, klingt schon nicht schlecht mit diesem rpc - wenns denn funktionieren würde. ;)

Im msdn gibt es sogar eine ganz gute Doku zum RPC, das dumme ist nur das ich nach einer Suche von einer Stunde das dort referenzierte SDK (Downloadlink ist tot ... ) nicht auftreiben konnte.

http://msdn.microsoft.com/en-us/library/ms818838.aspx

Der ganze Vorgang ist irgendwie ein bisschen seltsam, im Prinzip wird scheinbar nur der normale Code der Funktion geschrieben und dann mit einem externen Tool aus dem SDK eine UID und ein header-file generiert - ich zweilfe irgendwie das sich das so einfach mit dem Borland compilieren lässt.

Antwort 8 von Jaja vom 11.07.2020, 15:55 Options

da ich zum thema msrpc auch nicht weiter durchsteige, bleibst du doch lieber bei sockets ;)

ich hab da nämlich hier ein schönes tutorial gefunden, das dir bestimmt hilft..

hab in google einfach nach winsock+c++ gesucht ;)

rpc wär zwa moderner, aber bevor du noch tage mit der suche verbringst...

Ähnliche Themen

Super G-Modus
MaLi  19.07.2007 - 149 Hits - 6 Antworten

Fehlerhafte Dateiöffnung von Turbo Pascal
sousse  19.11.2007 - 73 Hits -

256 Turbo Cache
Havelse1  26.11.2007 - 81 Hits - 5 Antworten

Turbo-Pascal 3.0 war doch die beste Programmiersprache!
MSDOS-Fan  17.01.2008 - 56 Hits - 3 Antworten

Crossfire GeCube Radeon HD3850 X Turbo III
daveyjones63  04.02.2008 - 56 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 20:06:00 2026