Strings aneinanderheften *krampf*
-
Moin Leutz!
Also ich will für meinen Nachbarn über mir ein Programm schreiben, mit dem er mir übers Inet nachrichten schicken kann. Das Programm soll auf die das systemprogramm net.exe zugreifen. damit kann man beispielsweise mit dieser eingebabe eine nachricht verschicken "net send [ip] blah blah".
wie kann ich das machen dass ich ihm ermögliche eine nachricht einzutippen, die dann an net send weitergegeben wird?!?!?
das ganze soll so aussehen
net send [meine ip] [seine message]so weit bin ich bisher:
#include <stdio.h> #include <stdlib.h> #include <string.h> void main() { int auswahl; char text[255]; char text2[255]; printf("\t\t=============== Petar Piksa Sender ===============\n\n"); printf("Nachricht schreiben\t[ 1 ]\n"); printf("Programm beenden\t[ 2 ]\n\n"); printf("Ihre Auswahl:\t"); scanf("%d", &auswahl); fflush(stdin); if (auswahl = 1) { printf("Bitte Nachricht eintippen: "); gets(text); fflush(stdin); printf("%s", text); strcat(text2,"net send "); strcat(text2,text); printf("%s", text2); } }
[ Dieser Beitrag wurde am 24.11.2002 um 15:39 Uhr von Peter Piksa editiert. ]
-
loesche fflush(stdin) raus - das ist naemlich nicht erlaubt.
initialisiere text und text2 mal mit 0
char text[255]={0};
char text2[255]={0};denn ein strcat auf einen unitialisierten string ist gefaehrlich - da strcat nach dem ersten vorkommen von 0 sucht und danach den string anhaengt - wenn du aber pech hast, dann gibts kein 0 in den ersten 255 zeichen... und das ist toedlich
-
Nun ich würde dir vorschalgen das du dir ein kleines Programm schreibst,
was über Port Kommunikation realisiert ist. Net Send ist eigentlich nur für Lokale Netzwerke gedacht.Wenn du eine Hilfestellung benötigst, so helfe ich dir gerne.
-
Moin nochma!
Ich hab das Programm nun gecoded bekommen! vielen dank an Shade of Mine für deinen Tipp!
Der Vollständigkeit halber hab ich hier nochmal den Code gepostet: [ips sind abgeändert
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void main() { int auswahl; char text[255]={0}; char text2[255]={0}; int repeat; system("color 0c"); do { system("cls"); printf("============================== Peter Piksa Sender =============================\n\n"); printf("Nachricht schreiben\t[ 1 ]\n"); printf("Peter Pingen\t\t[ 2 ]\n"); printf("Programm beenden\t[ 0 ]\n\n"); printf("Ihre Auswahl:\t"); scanf("%d", &auswahl); fflush(stdin); if (auswahl == 1) { printf("Bitte Nachricht eintippen: "); gets(text); fflush(stdin); strcat(text2,"net send [ip] "); strcat(text2,text); system(text2); system("cls"); printf("============================== Peter Piksa Sender =============================\n\n"); printf("Programm wiederholen\t[ 1 ]\n"); printf("Programm beenden\t[ 0 ]\n\n"); printf("Ihre Auswahl:\t"); scanf("%d", &repeat); fflush(stdin); } if (auswahl == 2) { system("cls"); printf("============================== Peter Piksa Sender =============================\n\n"); system("ping [ip]"); printf("Programm wiederholen\t[ 1 ]\n"); printf("Programm beenden\t[ 0 ]\n\n"); printf("Ihre Auswahl:\t"); scanf("%d", &repeat); fflush(stdin); } } while(repeat == 1); }
Was ist das für eine geschichte mit den Ports @ DaDaywalker ???
-
Bevor Du Dich mit Ports und ähnlichem auseinandersetzt, solltest Du von Dingen wie 'void main(...)' und 'fflush(stdin)' Abstand nehmen ...
-
Original erstellt von mady:
Bevor Du Dich mit Ports und ähnlichem auseinandersetzt, solltest Du von Dingen wie 'void main(...)' und 'fflush(stdin)' Abstand nehmen ...leichter gesagt als getan, wir machen das auffer Schule...
...wieso sollte ich denn abstand davon nehmen!?
-
in C muss die Funktion main() einen Rückgabewert an das Betriebssystem liefern. Das machst Du mit
int main(void) { /* ... */ return 0; }
Siehe auch FAQ-Eintrag int main() oder void main()?.
Das fflush(stdin) liefert sog. undefiniertes Verhalten. Auch hierzu gibt's nen FAQ-Eintrag. Das 'Eingabeproblem' mit der Enter-Taste wurde schon ein paar mal hier besprochen. Am besten ist es, Du verwendest statt scanf() eine andere Eingaberoutine (fgets()). Das kannst Du Deinem Lehrer ja mal sagen (wobei gerade Lehrer recht 'lernresistent' sein können). Vielleicht erklärt er Dir/euch mögliche Alternativen.
[ Dieser Beitrag wurde am 25.11.2002 um 19:54 Uhr von mady editiert. ]
-
Original erstellt von Peter Piksa:
Moin nochma!
Was ist das für eine geschichte mit den Ports @ DaDaywalker ???Morchen....
Nun wie schon gesagt ist es eigentlich nicht so genial wenn du NET SEND über das Internet schicken willst da es nur für Lokale Netze gedacht ist. Außerdem ist mir schleiherhaft ob das über's Internet wirklich funktioniert.
Sicherlich wäre es am besten, wenn du einen Client-Server Architektur entwerfen würdest. Geht eigentlich auch ganz fix zu coden.
Dein Kumpel baut dann mit Hilfe deines Tools eine Verbindung zu einem geöffneten Port auf und kann dann mit dir über diesen Port kommunizieren. Somit kannst du Net Send umgehen.Wichtig ist jedoch wenn du so eine Anwendung schreibst, so sei dir im klaren, das du Hackern und anderen Nutzniesern offener Ports einen Riegel vorschieben musst. Zum Beispiel wäre einer DOS Attacke vorzubeugen oder Anmeldungsinformationen des Benutzers abzufragen. Desweiteren wäre eine verschlüsselung der Daten nötig. Im allgemeinen wäre das mal ein Projekt was du in Angriff nehmen könntest. Helfe dir gerne wenn du willst ?
Am einfachsten geht es natürlich wenn du ICQ verwendest..... DOCH man munkelt noch das einige Sicherheitslöcher vorhanden sind. Also schreib was eigenes damit fährst du am Sichersten. Hatte schon mal angefangen einen neuen Net Send Dienst zu schreiben, hatte dies dann aber nicht weiter verfolgt. Funktionierte bereits mit verschlüsselten Daten und Benutzerauthentification....
Wenn du allerdings noch nicht so viel Ahnung von Portkommunikation oder SOCKETS hast, dann wird die Aufgabe wohl zu haarig....
-
Hört sich kompliziert an...ist es sicher auch. mit meinen C-Kenntnissen komm ich da sicher nicht weit *G* von daher lass ichs lieber. trotzdem danke