Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Threads und Zugriff auf Netzwerk

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
20.09.2005, 15:11 Uhr
Thorsten



Hallo erstmal, das ist mein erstes Beitrag, bin neu hier.

Also ich hab zwei Probleme. Erstens will ich unter Borland (was ich noch nie benutzt hab) einen Thread zum laufen bringen. Das ging unter VC++ mit MFC. Wie macht man das mit Borland?

Und zweitens, ich würde gerne mit diesem Thread in einem Netzwerk Nachrichten an andere Rechner schicken. Das müsste doch per TCP/IP irgendwie gehen. Wie kann ich denn so einen Zugriff unter Windows hinbekommen? Weiss vielleicht auch jemand wie eine Nachricht unter TCP/IP genau aufgebaut sein muss oder wo ich Infos darüber herbekomme?

Wär nett wenn sich jemand meldet, auch gerne für Rückfragen.


viele Grüße


Thorsten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.09.2005, 09:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi zum 2ten Punkt: Netzwerk läuft über "WSA" bzw WinSock. das sollte unter Borland genauso sein.

evtl hilft das hier was:

www.sockets.com/winsock.htm
http://tangentsoft.net/wskfaq/

ansonsten liefert dir google sehr gute ergebnise zum Thema Winsock und Programmierung damit. Einige Beispiele dürfte es auch hier im forum geben
--
class God : public ChuckNorris { };

Dieser Post wurde am 21.09.2005 um 09:49 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.09.2005, 18:13 Uhr
~Lars
Gast


Hi,

MFC-Threads gehen unter Borland auch. Einfacher ist aber das VCL-Objekt TThread. Einfach über "Datei/neu..." -> Thread-Objekt wählen, ganz normal die Member-Funktionen programmieren, fertig.

Im Hauptprogramm per "new" den Thread erzeugen. Dem Konstruktor übergibst Du ein bool, das true ist, wenn der Thread schlafend (suspended) erzeugt werden soll, er läuft dann erst los, wenn Du ihn mit $threadobjekt->Resume () aufweckst; ist das bool == false, läuft er gleich los, der VCL-Thread.

Die Methode "Execute" wird aufgerufen beim Start, hier mußt Du solange kreiseln, bis der Thread beendet wird, was passiert, wenn die Methode komplett abgearbeitet ist. Also am besten eine Schleife while (!Terminated) { ... } für die Arbeit.

Das wars eigentlich; es gibt normalerweise keine Probleme, es sei denn, Du versuchst Datenaustausch mit dem Hauptprogramm über die VCL, dafür gibt es die function "synchronize". Auf single-cpu-Systemen gibt es normalerweise auch ohne synchronize keine Probleme, auf Mehrprozessorrechnern aber sehr wohl.

Die Hilfe zum VCL-Thread-Objekt ist ziemlich ausführlich, guckst Du darein.

Viele Grüße
Lars
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.09.2005, 18:14 Uhr
~Lars
Gast


Ach nochwas zu TCP: Es gibt die VCL-Objekte TClientSocket und TServerSocket, mit denen man sehr einfach eine Socket-Verbindung etablieren und Strings hin- und herschicken kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.09.2005, 10:20 Uhr
~Thorsten
Gast


Erstmal danke für die Antworten!!

Ich werd mich jetzt mal wieder dranmachen. Eine Frage hätte ich aber noch.
Ich will diese Funktionen in einer DLL realisieren. Diese DLL will ich dann in ein anderes Programm einbinden. Wichtig wäre zu wissen ob ich diese Anwendung nun auch z.B. mit MSVisual C++ machen kann. Ich mein macht das was, dass da VCL-Objekte benutzt werden. Läuft dass dann z.B. auch auf nem Rechner auf dem der Borland C++ Builder garnicht installiert ist?

Ich hoffe ihr versteht was ich meine, ich glaub ich bin nicht so gut im Erklären :-)

Wäre super wenn ich darauf noch ne Antwort bekäme. Ich könnte das zwar austesten, dafür müsste ich aber dann erstmal den Builder wieder deinstallieren um zu testen obs auch so geht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.09.2005, 12:52 Uhr
ao

(Operator)


Wenn dein Programm bzw. deine DLL VCL-Objekte verwendet, musst du natürlich sicherstellen, dass auf dem Zielsystem die VCL-Binaries in passender Version installiert sind. Das kann man durch händisches Kopieren erledigen oder (besser) durch ein Windows-Installer-Setup.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.09.2005, 13:00 Uhr
ao

(Operator)



Zitat von ~Lars:
MFC-Threads gehen unter Borland auch. Einfacher ist aber das VCL-Objekt TThread.

Halte deine Projekte so einfach wie möglich. Wenn du die VCL schon drin hast, nimm nicht noch die MFC dazu.

Im günstigen Fall funktioniert es wie geplant, im ungünstigen kriegst du Unverträglichkeiten zwischen den Bibliotheken, #include-Abhängigkeiten und anderen sinnlosen Ärger, der nur aufhält.

Besser, schöner, übersichtlicher, leichter wartbar oder so wird dein Projekt auf keinen Fall.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.09.2005, 13:28 Uhr
~Thorsten
Gast


Ok, ich werds so einfach wie möglich machen. Ich denke nur VCL reicht. Die brauch ich aber für die Sockets.

Nun hab ich aber ein anderes Problem. Ich hab mir unter Borland C++ Builder ne DLL erstellt und ne Konsolenanwendung. Ich rufe von der Konsolenanwendung aus Funktionen der DLL auf. Das funktioniert auch (hab also in der konole.cpp die dll.h eingebunden und die lib hinzugefügt).

Nun wollte ich aber von MSVisual C++ eine Konsolenanwendung machen und die DLL die vom Borland war benutzen. Das ging nicht, der hat noch nicht mal den Header der DLL akzeptiert.

Also hab ich mir unter MSVisual eine DLL gemacht, das ging auch, aber als ich sie unter Borland benutzen wollte hat er die DLL zwar akzeptiert, aber wenn ich von der Konsole nun eine Funtkion der DLL aufrufen wollte bekomme ich nen Linkerfehler "Unresolved external 'fnDLL(int)' referenced from C.....Obj

Was mach ich denn falsch? Liegt das am Quellcode oder nur an irgendwelchen Einstellungen unter Borland bzw MSVisual ??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.09.2005, 00:56 Uhr
ao

(Operator)


Ist das ne C- oder C++-DLL?

Bei C++ schlägt das (nicht standardisierte) Name-Mangling des C++-Compilers zu und erzeugt nichtportable Symbolnamen, d.h. der MS-Linker findet in der Borland-LIB die benötigten Symbole nicht und umgekehrt. Weil sie nicht so heißen wie erwartet.

Dass der MS-Compiler den Borland-Header nicht wollte, hat noch irgendeinen anderen Grund.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.09.2005, 08:38 Uhr
~Thorsten
Gast


Gibts denn irgendwo 2 ganz einfache Borland Builder Projekte. Eines wo ne DLL erzeugt wird und ein anderes (Konsolenprojekt) das eine Funktion diese DLL nutzt?

Müsste echt nur klein sein. Dann hätte ich nämlich ein Anfang. Ich sitz seit ner Woche dran und es will einfach net gehen. Ich hab mittlerweile nämlich gemerkt, dass die DLL die ich mit Borland erstellt hab doch nicht geht, selbst wenn ich sie mit Borland benutzen will. Da kommt immer "Unresolved external "Funktionsname" referenced from "...obj"

Ich verzweifel noch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: