Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Bad_King gesperrt

Anmeldungsdatum: 15.04.2006 Beiträge: 455 Wohnort: nähe Stuttgart
|
Verfasst am: 17.11.2006, 20:06 Titel: Problem in C++ |
|
|
Hi,
ich habe ein Problem in C++.
Ich will ein Programm programmieren, das netzwerkcomputern per net send nachrichten sendet. (Für die Schule)
Hier ist mein Code:
Code: | #include <iostream>
#include <string>
#include <stdlib>
using namespace std;
int main() {
string msg;
string cn;
string sends;
long anz;
long i;
//Abfrage
cout << "Computername: ";
cin >> cn;
cout << "Nachricht: ";
cin >> msg;
cout << "Anzahl: ";
cin >> anz;
sends = "net send " + cn + " " + msg;
// Die Nachricht wird anz mal gesendet
for(i = 0; i <= anz; i++) {
system(sends);
}
return 0;
}
|
Aber wenn ich das programm ausführen will kommt folgende Fehlermeldung:
"msgsend.cpp": E2034 Konvertierung von 'string' nach 'const char *' nicht möglich in Funktion main() in Zeile 28
"msgsend.cpp": E2342 Keine Übereinstimmung des Typs beim Parameter '__command' ('const char *' erwartet, 'string' erhalten) in Funktion main() in Zeile 28 |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 17.11.2006, 20:14 Titel: |
|
|
Interessant. Wenn du uns jetzt noch Rechte geben würdest, die Fehlermeldung anzuschaun - oder wenigstens die Fehlermeldung textlich nennen würdest...
Ich vermute allerdings, dass der Fehler in folgender Zeile kommt (zu faul zum Probieren ):
Code: |
sends = "net send " + cn + " " + msg;
|
_Lern_ erstmal C bzw. C++, eh du sinnvolle Programme schreiben willst.
Außerdem wär's auch ganz hilfreich, wenn man sich mal die Headerdateien der verwendeten Libs anschauen würde - aber das scheinst du ja offensichtlich nicht gelernt zu haben...
Ersteinmal würde ich ein char-Array verwenden. Und dann arbeitet man nicht mit + (is' in C(++) nur ein mathematischer Operator) sondern mit strcopy. Wie gesagt, schau dir die Headerdatei string.h an.
Übrigens: demnächst bitte sagen, welchen Compiler du verwendest. djgpp, MinGW, ... _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Bad_King gesperrt

Anmeldungsdatum: 15.04.2006 Beiträge: 455 Wohnort: nähe Stuttgart
|
Verfasst am: 17.11.2006, 20:18 Titel: |
|
|
Man kann die Fehlermeldung sehen und sie ist auch Textlich.
Ich verwende den Borland C++Builder X |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 17.11.2006, 20:48 Titel: |
|
|
Nimms mir nicht übel, aber du solltest erstmal ein wenig C/C++ lernen.
in C nimmt man immer "char ptr" (byte ptr), also ein byte/ubyte array, in dem text ist. In den Fehlermeldungen steht auch, das string zu char * nicht konvertiert werden kann, ich weiß noch nichtmal, ob es string überhaupt in C gibt
Am besten wäre, wenn du mal die Grundlagen von C lernst.  _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 17.11.2006, 20:53 Titel: |
|
|
programmierer hat Folgendes geschrieben: | (...)ich weiß noch nichtmal, ob es string überhaupt in C gibt. |
Ja. Eigene Klasse, siehe "#include <string>". Recht brauchbar, aber total überladen.
MfG
Lutz Ifer _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 17.11.2006, 20:53 Titel: |
|
|
Ja, ich feix mir gleich einen ab.
Schnell hinzueditiert, gell?
Das system-Kommando erwartet meiner Meinung nach 'nen Char-Array, und automatisch rübercasten is' net. Also entweder du arbeitest gleich mit char-Arrays oder du castest den Typ.
Empfehle ersteres:
Macht Platz für eine Nachricht von 200 Zeichen (0-Byte am Ende).
So, und die betreffenden Zeilen aus den Header-Dateien:
Code: |
_CRTIMP char* __cdecl strcpy (char*, const char*);
_CRTIMP char* __cdecl strcat (char*, const char*);
|
Beispiel:
Code: |
#include <iostream>
#include <string>
using namespace std;
int main()
{
char vorname[20], zuname[30], name[51];
cout<<"Vorname: ";
cin>>vorname;
cout<<"Zuname: ";
cin>>zuname;
strcpy(name, vorname);
strcat(name, " ");
strcat(name, zuname);
cout<<name<<endl;
system("pause");
return EXIT_SUCCESS;
}
|
So, ich hab mit Absicht nicht deinen Code umgeschrieben.
Es dürfte aber kein Problem sein, mit Hilfe des Beispiels und der Header-Datei sich daraus einen Reim zu machen und es auf dein Net-Send-Dingens zu adaptieren.
(Also wir schreiben uns für sowas Batch-Files - warum so kompliziert? Einfach alle IP's im Raum 192.168.0.1-192.168.10.255 durchsenden lassen. Das wären jedenfalls die Rechner bei uns. ) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Bad_King gesperrt

Anmeldungsdatum: 15.04.2006 Beiträge: 455 Wohnort: nähe Stuttgart
|
Verfasst am: 18.11.2006, 10:33 Titel: |
|
|
Also wenn ihr mir die richtige Antwort sagt, kann ich was lernen.
edit:
Der Beitrag von Mao war hilfreich.
Das programm geht jetzt:
Code: | #include <iostream>
#include <string>
#include <stdlib>
using namespace std;
int main() {
char cn[20], msg[100], sends[200];
long anz;
long i;
//Abfrage
cout << "Computername: ";
cin >> cn;
cout << "Nachricht: ";
cin >> msg;
cout << "Anzahl: ";
cin >> anz;
strcpy(sends, "net send ");
strcat(sends, cn);
strcat(sends, " ");
strcat(sends, msg);
// Die Nachricht wird anz mal gesendet
for(i = 0; i <= anz; i++) {
system(sends);
}
return EXIT_SUCCESS;
}
|
|
|
Nach oben |
|
 |
Dark_King

Anmeldungsdatum: 24.07.2006 Beiträge: 109 Wohnort: Neustetten - BW
|
Verfasst am: 18.11.2006, 12:46 Titel: |
|
|
king01 hat Folgendes geschrieben: | Man kann die Fehlermeldung sehen und sie ist auch Textlich.
Ich verwende den Borland C++Builder X |
den hab ich auch, lerne ja auch gerade C++ aber der compiler is der größte dreck! ich werd mir demnächst mal VisualBasic holen. _________________
 |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 18.11.2006, 12:53 Titel: |
|
|
Um dich jetzt mal "vorzuwarnen":
Du verwendest bei der maximalen Anzahl den Datentyp long. Das macht eine maximale Anzahl von 2 147 483 647. Mehr als 2 Mrd. Anfragen sind also möglich. Wenn du den dann noch irgendwann als Unsigned Long festlegen solltest, dann kommst du sogar auf 4 294 967 295. Wie du siehst mehr als 4 Mrd. Wenn du das dann auf sagen wir 5 Rechner gleichzeitig schon bis "nur" ein paar tausend durchlaufen lässt, kann es, je nach Maximalleistung der Verbindung (weiß ja net, ob ihr FastEthernet oder Gigabit-Ethernet verwendet) sehr schnell zum Stillstand des Netzes kommen. Das hängt dann aber auch wieder von der Netzwerk-Topologie ab. Je nach oben genannter Topologie beträfe es nur einen einzigen Raum, oder das gesamte Netz. Bei uns befinden sich in einem Raum 20 Terminals - sprich Festplattenzugriffe werden übers Netzwerk zum Server weitergeleitet. (Ich denk mal, die meisten Schulen werden's so ähnlich haben.)
Und ich glaub du kannst dir vorstellen, dass der Admin des Netzes nicht unbedingt glücklich drüber wär, wenn die Terminals deswegen nicht speichern oder Zugriffe auf den Server nicht mehr möglich sind (wie in anderen Räumen mit "eigenen" Festplatten, bei denen die Home-Verzeichnisse auf den Server ausgelagert wurden).
Aber wenn du erst damit Erfahrung machen willst...
Deswegen würd ich's auf maximal 10 Anfragen mit einer Eingabe beschränken. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Bad_King gesperrt

Anmeldungsdatum: 15.04.2006 Beiträge: 455 Wohnort: nähe Stuttgart
|
Verfasst am: 18.11.2006, 19:51 Titel: |
|
|
Ist doch cool wenn ich das Netzwerk zum Stillstand bringen kann
Ist es auch irgentwie in C++ möglich mehere ping-anfragen (bzw. Dos-Kommandos) gleichzeitig auszuführen? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 18.11.2006, 20:18 Titel: |
|
|
Okay, mal so gesagt:
ich hab's auch schon gemacht, aber mit wesentlich einfacheren Mitteln - darin liegt der Reiz.
Wie man lesen konnte, hab ich schon oft meine Langeweile an fremden PC's ausgelassen...
Aber king01, das is' nich' unbedingt cool. Nur so lange, wie man dich noch nicht als Urheber herausgefunden hat. Und ein einigermaßen gut ausgestattetes Netzwerk reicht aus, um das herauszufinden.
Auch ihr habt bei euch (hoffentlich - wär ja genial, wenn's net so wär' ) jeder einen eigenen Account. Und Remotelogin wird _immer_ protokolliert. Und wenn das Netzwerk zum Stillstand gekommen ist, kann man in den Logs nachlesen von welcher IP besonders viel Traffic kam. Mag sein, dass dann beispielsweise noch Freunde "rausgefischt" werden, aber es ist auch kein Problem, den ursprünglichen Eigentümer einer Datei rauszufinden.
Wie gesagt, ist deine Sache, ob du dich erst mit dem Admin deiner Schule anlegen willst...
Und nebenbei bemerkt ist sowas strafbar.
(Und es brauch jetzt keiner kommen, von wegen "da müsst ihr aber noch 2 Jahre warten, bis ich 14 bin...". ) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 18.11.2006, 20:58 Titel: |
|
|
Ja, das auch.
Aber ich ging von rechtlichen Strafen aus - immerhin geht dadurch Zeit verloren. Es fällt Unterricht aus und die Schulleitung bzw. die Lehrer können nicht auf ihre Daten zugreifen, die sie vllt. gerade jetzt brauchen.
Aber an den Schulverweis hatt' ich echt nicht gedacht - damals gab's nur 2-wöchige Accountsperrung.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ebrady
Anmeldungsdatum: 06.07.2005 Beiträge: 45
|
Verfasst am: 18.11.2006, 21:18 Titel: |
|
|
Sowas ähnliches mit Net Send hab ich auch schonmal gemacht. Allerdings einfach über den Taskplaner mit 1-minütigem Intervall dem armen Mitschüler Nervnachrichten geschickt. |
|
Nach oben |
|
 |
Dark_King

Anmeldungsdatum: 24.07.2006 Beiträge: 109 Wohnort: Neustetten - BW
|
Verfasst am: 19.11.2006, 11:46 Titel: |
|
|
Mao hat Folgendes geschrieben: | damals gab's nur 2-wöchige Accountsperrung.  |
lol nur 2 wochen account sperrung, ich (meine ganze klasse!) hat letztes jahr im märz oder so ne internet sperre bekommen für den rest des jahres, weil wir angeblich die mäuse und tastaturen ausgesteckt haben als wir aus dem PC raum raus mussten
der admin is auch irgendwie komisch...  _________________
 |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 19.11.2006, 14:35 Titel: |
|
|
Das is' schon schlimmer, als du denkst.
Da im Unterricht bei uns viel die Computer mit einbezogen werden, befinden sich in unsren Home-Verzeichnissen auch dementsprechend viele Dinge für die Schule. Dumm nur, wenn man dann nicht mehr ran kann.
Aber so 'ne Internetsperre wäre auch dämlich, was soll ich denn dann im EDV-Unterricht machen?! Dann hab ich ja überhaupt keine Abwechslung mehr...  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ChemicalWarfare

Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 19.11.2006, 17:25 Titel: |
|
|
Lutz Ifer hat Folgendes geschrieben: | programmierer hat Folgendes geschrieben: | (...)ich weiß noch nichtmal, ob es string überhaupt in C gibt. |
Ja. Eigene Klasse, siehe "#include <string>". Recht brauchbar, aber total überladen.
MfG
Lutz Ifer |
es gibt in c keine klassen.
@topic: mit der c_str() methode kannst du einen c++-string in ein c-string (char array) casten:
Code: | system( sends.c_str() ); |
_________________ Er ist ein Wunder!
Nein, er ist eine Missgeburt. |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 20.11.2006, 17:35 Titel: |
|
|
ich denk, das lahmlegen soll bedeuten:
ha! ich hab ein netzwerk geschrottet! kann ich! das nächste!
also: einfach mal ausprobieren um dann zu sagen: ich könnte ein netzwerk lahmlegen, so sinnlos es auch ist...
und:
juchuuuuuuu!
100ter post (endlich mal ein grund diese smileys zu benutzen ) _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 20.11.2006, 17:59 Titel: |
|
|
Ich weiß, warum man sowas macht bzw. warum ich sowas gemacht hab.
Ich will nicht sagen, dass ich 'nen Engelchen bin (außer der Forenengel natürlich ), aber _so_ 'nen scheiß mach ich nicht mehr.
Und was solls dir bringen, ein Netzwerk lahm legen zu können?
Wenn du zu viel fernsiehst, dann bedenke aber auch mal: wann hast du im RL Zugriff auf mehrere PC's gleichzeitig die an einem großen Netzwerk angeschlossen sind? Also bitte... _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|