I/o – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

I/o – C / C++ – Fórum – Programujte.comI/o – C / C++ – Fórum – Programujte.com

 

5. 2. 2007   #1
-
0
-

Noo tak dam system("telnet xxx xx"); a ten po me chce jakesi dalsi prikazy (HELO, DATA atd.)... a ja se ptam, jak je tam dostat aniz bych musel smatnout na klavesnici.. tedy vyzkousel jsem nekolik vystupnich funkci, ale vzdy pockali az kdyz uzavru telnet a potom teprve zacali psat.. Jeste by me zajimalo, kdyz zavolam nejaky prikaz pomoci system, jak ulozit vypis/ vysledek, proste to co ten prikaz vytiskne na obrazvku, a nacpat to do nejake promene??

Nahlásit jako SPAM
IP: ...–
Pedro0
Stálý člen
6. 2. 2007   #2
-
0
-

mozes presmerovat vystup do suboru a potom to z toho suboru nacitat ...

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
6. 2. 2007   #3
-
0
-

fajn nejak se pokusim... a ten telnet, plssssssssssssssss :'-(

Nahlásit jako SPAM
IP: ...–
sn3d0
Věrný člen
6. 2. 2007   #4
-
0
-

Nieje lebsie pouzit normalne pracu zo socketmi?Ako zo svojej aaplikacie volat dalsiu aplikaciu?

Nahlásit jako SPAM
IP: ...–
shutdown -h now
6. 2. 2007   #5
-
0
-

chystam se... ale pro zacatek mi pripada jednodussi tohle. I kdybych ale presedlal na sockety, tohle by me dost zajimalo :-)

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
6. 2. 2007   #6
-
0
-

To Zelenáč: Nema telnet nahodou nejake parametry, kterymi by mu ty data sly predat? Ptam se, nechce se mi to ted hledat ani zkouset. A co se tyce toho druheho, tak jeste muzes, k tem vsem moznostem, ktere tu padly, pouzit rouru(pipe).Nevyhoda je stejna jako u vsech moznosti - ani jedna neni prenositelna.

Nahlásit jako SPAM
IP: ...–
6. 2. 2007   #7
-
0
-

Bohuzel.. nema; stejne jako treba u ftp...
Nevim, jak je to u jinych OS, ale pres telnet to bude fungovat na Windows a GNU/Linux.. Takze snad i proto se mi libi tato varianta (kdyz uz ne kvuli jednoduchosti - i kdyz, kdyby to bylo tak jednoduche, tak bych se tu na to neptal :-)

Nahlásit jako SPAM
IP: ...–
sn3d0
Věrný člen
7. 2. 2007   #8
-
0
-
Nahlásit jako SPAM
IP: ...–
shutdown -h now
7. 2. 2007   #9
-
0
-

fuj.. microsrot... To nikdo nevi jak vyresit telnet, ze me vsichni odkazujete na sockety, roury a ja nevim co jeste???

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
7. 2. 2007   #10
-
0
-

To sn3d: To nepopiram, ja jsem jen uvedl dalsi moznost.
To Zelenáč: Mno, mam pocit, ze to ani jinak nejde a uz vubec ne multiplatformne. Zkus si pohledat, co dela fce system

Nahlásit jako SPAM
IP: ...–
7. 2. 2007   #11
-
0
-

tak dobre, zkusim to jeste jednou:

otevru si terminal a zadam napr. "telnet gmail.com 25" (tedy zadato za me system(), ale to je ted jedno..)
"Trying 64.233..."
"Connected..."
"220 mail..."
ted potrebuju napsat "HELO gmail.com" ! Tedy aby to za mne napsal muj programek...

chapete??? rekneme ze mi nezalezi (prozatim) na tom, aby to bylo multiplatformni - musi to fungovat na Tucnacich...
a nechci zadne sockety, chci jedine tohle!! :-)

Nahlásit jako SPAM
IP: ...–
sn3d0
Věrný člen
8. 2. 2007   #12
-
0
-

Problem nieje ten ze nikto nevie ako sa to da vyriesit bez rur a socketov.Problem je ten ze sa to neda vyriesit bez pouzitia rur alebo socketov(smolu mas ze Windows ma rury tak komplikovane). A uz vobec nie v C/C++.To co potrebujes je vzajomna komunikacia medzi procesmi.Tato problematika obsahuje viacero technik ako rury, sockety, zdielana pamet ale ziadna z tychto technik nieje az tak jednoducha ze ju vyriesis jednym prikazom ako ty chces.

Fakt neviem co moze byt jednoduchsie ako otvorit si nejaky file descriptor a do neho zapisovat a citat.

Toto je sposob pre Windows a sockety(nakolko vo Windows pouzivat pipes je pre mna akosi divoke)



#include <windows.h>

#define BUFSIZE 1000

int socket_init()
{
WORD wVersionRequested = MAKEWORD(1,1);
WSADATA data;

if (WSAStartup(wVersionRequested, &data) != 0)
{
printf("ERROR: cannot initialize sockets\n");
return -1;
}
return 0;
}

int socket_connect(const char* ip_address, int port)
{
hostent *host;
int socket_descr;
sockaddr_in serverSock;
int res;

host = gethostbyname(argv[1]);
if (!host) {
printf("ERROR:bad host address\n");
return -1;
}

socket_descr = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (socket_descr < 0) {
printf("ERROR:cannot create socket\n");
return -1;
}

serverSock.sin_family = AF_INET;
serverSock.sin_port = htons(port);
memcpy(&(serverSock.sin_addr), host->h_addr, host->h_length);
res = connect(socket_descr, (sockaddr *)&serverSock, sizeof(serverSock));
if (res < 0) {
printf("ERROR:cannot connect to server\n");
return -1;
}

return socket_descr;
}


int main()
{
int sock;
const char buffer[BUFSIZE];
int buf_size;

socket_init();
sock = socket_connect("gmail.com", 25);

if (sock >= 0) {
//nacitam co poslal server
buf_size = recv(sock, buffer, BUFSIZE, 0);
if (buf_size > 0) {
printf("prijate:%s", buffer);
}

//poslem serveru nieco
send(sock, "HELO gmail.com", sizeof(char) * 14, 0);

closesocket(mySocket);
}

WSACleanup();

return 0;
}



Dalsia vec je ze az doteraz si sa nezmienil o tom ze to chces pre Linux.Ja som si to vsimol az teraz..Otvoris si ruru(popen()), zapises(fwrite()), precitas(fread()), uzavries ruru(pclose()).



#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define BUFSIZE 1000

int main()
{
FILE* telnet;
char buffer[BUFSIZE];
int buf_size;


telnet = popen("telnet neviem kam","w");
if (telnet) {

//zapisem na telnet nieco
sprintf(buffer, "text ktory poslem\n");
fwrite(buffer, sizeof(char), strlen(buffer), telnet);

pclose(telnet);
}

return 0;
}


Ukazky su principialne.Nekompiloval som ich ani som ich neskusal.Su len ilustracne.Este doporucujem pozriet problematiku rur, parent a child procesov, funkcie ako dup(), fork(), pipe(), execl() atd..

Nahlásit jako SPAM
IP: ...–
shutdown -h now
8. 2. 2007   #13
-
0
-

Super !!! :-) Konecne mi to nekdo vysvetlil.. Moc, moc, moc dik ;-)

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 71 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý