Archiv verlassen und diese Seite im Standarddesign anzeigen : systembefehl
commanderzor
11.09.2006, 11:35
hi @ all
brauch dringend ma hilfe...
ich will mich per telnet in pop.gmx.net einloggen
probiere das so:
system("telnet.exe pop.gmx.net 110")
das tut auch wunderbar aber danach hängt das prg...
ich will nu aber dass er den username automatisch eingibt...
also so
system("telnet.exe pop.gmx.net 110 user username");
und des tut net!
linux_80
11.09.2006, 13:56
Mit system wird das nix gescheites werden,
besser wenn Du das per open machst, und dann stdin/out/err anzapfst, denn das telnet (POP3) ist interaktiv, das wird ansonsten nicht gehen.
Das Prg hängt sich dann nicht, sondern es wartet bis jemand was eingibt, was ja nicht geschehen kann !
commanderzor
11.09.2006, 15:16
danke habs geahnt...
aber wie kann ich das per open machen?
ich bin hir net so der c++ spez.
vlt n grober code?
thx im voraus...
guck mal hier: http://codefactory.dead-men.de/index.php?tutorial=28
das ist eine port 80 http abfrage mit sockets für windows.
vielleicht lässt sich damit was anfangen, und du kannst dir das telnet sparen.
gruesse von der katz
Wenn du eine POp3 server anquatschen willst, ist das (im Prinzip) recht einfach. Du schickst einen Connect an das 110-er Port
Der Server schickt dir Strings mit <CR><LF> hinten, und du schickst genauso was zurück. Das ist bei FTP (21) und Http (80) nicht viel anders.
Soweit sollte es auch mit normalem File-open gehen (hab ich aber noch nicht gemacht, ich nehm die Sockets immer direkt)
WAS hin und hergeschickt wird
http://de.wikipedia.org/wiki/POP3
commanderzor
11.09.2006, 19:16
jo das mit dem connect und dem sonstigen pop gelöt kenne ich schon mein problem ist dass ich keine ahnung habe vonwegen file open und mir das gegoogelte auch eher wenig sagt vlt habt ihr ja nen link bez. einem tutorial.
Ich bin ja eher ein uC programmierer habe also vonwegen windoo...s
eher weniger ahnung daher verstehe das mit dem open net so recht
danke für erklährungen an meine eher mederbemittelte person ;)
ich hab doch ein tut gepostet! -.-
aber nagut, ich guck mal.. werd evtl hier noch was reineditieren.
gruesse
Was soll's denn werden ? Willst du dir deine Mails selbst abholen ?
lol, verarsch die katze nicht!
genau das hatte ich vor. ich schick mir eine mail und connecte auf den pop3, und lad die mail wieder runter..
das ganze möglichst einfach gestrickt, damit es übersichtlich bleibt.
gruesse ^^
Au weia. Ich mußte das selber schreiben, weil es für VMS/Alpha (egal, irgendeine Platform halt) keinen vernünftigen Mail-Client gab (auch nicht zum Mail-wegschicken).
Ich sag dir gleich, das Mail holen hast du gleich beisammen. Aber diese Mails dann Lesen ist eine grausliche Geschichte.
commanderzor
12.09.2006, 09:11
Möchte mich an dieser stelle mal für eure hilfe/geduld bedanken
habe dein tut übersehen sry
ich denke ma das mit dem socket ist der richtige weg.
ich muss nur das zeugs zuerst ma lernen.
ich denke ich versteh was das prgm machen sollte
wenn ich es jedoch kopiere und bei mir
einfüge habe ich da ein klitzekleines problem
nämlich folgendes
[Linker error] undefined reference to `WSAStartup@8' ld returned 1 exit status (what the hell? :-s )
C:\socket\Makefile.win [Build Error] [Project1.exe] Error 1
(ich habe ganz normal im dev-C++ console appl ausgewählt)
tja was nu?
Ich füge in das Projekt "WS2_32.LIB" ein. (is im c++ libraryverzeichnis)
commanderzor
12.09.2006, 09:33
sollich dir ma richtig aufn wecker gehen?
ich finds nich! entweder bin ich echt zu dumm
oder ich finde kein einziges .lib file im ganzen dev_cpp ordner
*wahnsinnig werden*
gr comDave
Normalerweise dort, wo man den Compiler installiert hat.
Bei mir z.B. is das
C:\Program Files\Microsoft Visual Studio\VC98\Lib
Ahja, nochwas Bei "FIle in Project einfügen" mußt du natürlich den Type "LIB" auswählen
commanderzor
12.09.2006, 09:52
so jetz habe ich es gefunden gab einfach _lib und lib vorallem sind es bei mir *.a files.
so nu beginn ich erstma mit dem lernen ;)
gr comDave
werde mich heute vielleicht auch mal damit befassen. wenn ich weiß wie es geht, poste ich hier. ich verwende allerdings bcc32, nicht bloodshed oder sowas. sind aber nur kleine unterschiede beim einbinden der libraries.
funktioniert der http-get jetzt bei dir, bzw kannst du es fehlerfrei kompilieren? das proggie ist keine console-anwendung, sondern richtig mit nem fenster und so..
gute tutorial zu winsock finden sich auf http://www.c-worker.ch/
viel erfolg, und melde dich, wenn etwas nicht klappt.
gruesse
commanderzor
12.09.2006, 11:31
DAS hätt ich nicht gesagt... ;)
folgendes prob: ich erstelle eine verbindung zu unserem server
der auch brav antworted dann will ich aber z.B. help senden und wieder
empfangen. nun empfängt er auch was ich geschickt habe also "help",
allerdings schreibt er mir nicht was er zum befehl help meint
z.B "'could not find 'help'".
überdies hab ich beim rückgabewert '4' was ja logischerweise "help" entspricht.
muss ich da noch irgendein <cr><lf> senden? bzw. kann ich das mit \0 \n \x13 tun?
Also, bei ASCII ist <CR><LF> immer gut.
Was du da im moment siehst, ist wohl das Echo, weil er wohl denkt, du bist ein Terminal
so.. das hat zwar ein bisschen gedauert, aber hier habe ich eine console-anwendung, die emails von einem pop3-server herunterläd, sie anzeigt, und anschliessend vom server löscht.
das ganze ist noch nicht ganz perfekt (man sollte zum bleistift bei jedem "send(..);" den rückgabewert prüfen), aber man sieht wie man es macht, und es funktioniert auch (getestet unter xp mit web.de, gmx.de, und meinem webspace-server).
#include<stdio.h>
#include <winsock2.h>
//#include<string.h> // braucht bcc32 nicht
int main(int argc, char* argv[])
{
long rc;
SOCKET s;
SOCKADDR_IN addr;
char buf[1024];
WSADATA wsa;
HOSTENT* he;
int number_of_mails,i;
char *p,*p2;
if(argc!=4)
{
printf("syntax: pop3console.exe host user password\n");
printf("syntax: pop3console.exe pop3.web.de meier@web.de ganzgeheim\n");
exit(1);
}
// socket erstellen und connecten
if(WSAStartup(MAKEWORD(2,0),&wsa)!=0)
{
printf("Could not Startup WSA\n");
exit(1);
}
s=socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
printf("Could not create socket\n");
exit(1);
}
memset(&addr,0,sizeof(SOCKADDR_IN)); // auf 0 setzen
addr.sin_family=AF_INET;
addr.sin_port=htons(110); // port
he=gethostbyname(argv[1]);
memcpy(&(addr.sin_addr),he->h_addr_list[0],4);
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
if(rc==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
printf("Could not connect\n");
exit(1);
}
printf("connected to %s\n",argv[1]);
// login + check for mail
sprintf(buf,"USER %s\r\n",argv[2]);
rc=send(s,buf,strlen(buf),0);
if(rc==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
printf("Could not send\n");
exit(1);
}
rc=recv(s,buf,1023,0);
buf[rc]='\0';
printf("%s",buf);
sprintf(buf,"PASS %s\r\n",argv[3]);
rc=send(s,buf,strlen(buf),0);
if(rc==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
printf("Could not send\n");
exit(1);
}
rc=recv(s,buf,1023,0);
buf[rc]='\0';
printf("%s",buf);
rc=recv(s,buf,1023,0);
buf[rc]='\0';
printf("%s",buf);
sprintf(buf,"STAT\r\n");
rc=send(s,buf,strlen(buf),0);
if(rc==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
printf("Could not send\n");
exit(1);
}
rc=recv(s,buf,1023,0);
buf[rc]='\0';
printf("%s",buf);
// anzahl der mails bestimmen
// wenn alles geklappt hat, steht hinter dem letzten "+OK" die anzahl der mails im postfach
p=buf;
while(strstr(p,"+OK")!=NULL)
p=strstr(p,"+OK")+1;
p+=3;
p2=strstr(p," ");
if(p&&p2)
{
*p2=0;
number_of_mails=atoi(p);
printf("%d mails auf dem server\n",number_of_mails);
}
// mails runterladen
for(i=1;i<=number_of_mails;i++)
{
sprintf(buf,"RETR %d\r\n",i);
send(s,buf,strlen(buf),0);
do
{
rc=recv(s,buf,1024,0);
buf[rc]='\0';
printf("%s",buf);
if(strstr(&buf[rc-5],"\r\n.\r\n")!=NULL)break;
}
while(rc!=SOCKET_ERROR);
// geladene email vom server löschen
sprintf(buf,"DELE %d\r\n",i);
send(s,buf,strlen(buf),0);
}
// session beenden
sprintf(buf,"QUIT\r\n");
send(s,buf,strlen(buf),0);
// aufraeumen
closesocket(s);
WSACleanup();
return 0;
}
vielleicht hilft es jmd O:)
man würde natürlich die mails lokal speichern, und dann einen emailbetrachter öffnen, statt sie nur in der konsole darzustellen.
eine andere idee ist, daraus einen spamfilter zu basteln, der unerwünschte mails löscht, bevor man sein email-proggie öffnet, das dann den rest runterläd.
Katze: strcmp("QUOTE", "CODE") != 0 ) !!!
na gut na gut.. ich habe gerade festgestellt, dass es mit IE und mozilla kein problem ist, den code zu markieren und zu copypasten. nur mein opera kann das nicht. taugenichtse.
gruesse von der katz
Na super, das sollt' doch helfen !
linux_80
15.09.2006, 18:03
Ist Outlook wirklich so schlimm, das man unter XP lieber mit Console arbeitet :-k :cheesy:
SCNR
Es ist ganz praktisch, erstmal zu gucken was von wem da ist und wie groß es ist, bevor man das Zeugs runterholt.
Darüber hinaus ist es wohl mehr eine Fingerübung.
Wie gesagt, ich selber MUSSTE, denn für VMS gibts nix brauchbares
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.