Citat:
Al nevazno, ono sto mi je zaparalo oko je:
ipEndPoint = new IPEndPoint(Dns.GetHostEntry("Broan01").AddressList[0], port)
tranferSocket.Connect(ipEndPoint);
Ovo sigurno nije problem zato sto sam ovu simbolicku adresu stavio u trenucima ocaja dok sam pokusavao sve i svasta kako bih ga naterao da proradi. Izprva je tu stajala ip adresa dobijena kao response na PASV komandu.
Elem, posto vidim da si se zainteresovao da mi pomognes mozda ne bi bilo loshe da ti detaljnije malo objasnim sta ja u stvari hocu da postignem ovim sto radim. Fora je sto ja uopste nisam siguran da to mogu da uradim na nacin na koji pokusavam pa me mozda mozes usmeriti na drugu stranu.
Naime, aplikacija sa kojom pokusavam da se integrisem jeste neki IBM-ov ERP. On funkcionise tako sto mu se preko FTP-a salju neke komande sa parametrima na osnovu kojih on nesto uradi(recimo vadi neke podatke iz baze) i smesta to u neki txt fajl. Medjutim, ljudi koji rade sa tim softverom nikada nisu imali iskustva sa c#. Oni taj sortware koriste tako sto ukucavaju te komande u recimo command prompt-u. Prvo ide konektovanje na server, pa logovanje pa onda komanda za izvrsavanje nekog zadatka i onda ide GET kako bi prebacili taj fajl u direktorijum na lokalnoj mashini jer se ta aplikacija izvrsava na posebnoj mashini.
Moja aplikacija je ASP.NET sajt i ono sto ja trebam da uradim jeste da omogucim klijentu da kada se uloguje, klikne na neko dugme i da mu se prikaze katalog sa cenama. Kada on klikne na dugme ja trebam da uspostavim FTP konekciju, izvrsim komandu sa parametrom koji je ID tog klijenta, ta komanda ce za rezultat imati fajl sa cenama tako da na kraju trebam da download-ujem taj fajl. Kada ga download-ujem onda te podatke izcitam i prikazem klijentu.
Evo kako izgleda ta komanda:
QUOTE RCMD SUPLISTCL CSTNBR('10593')
U command promptu sve ide lako:
ftp> open NazivServera 21/ nakon ovoga dobijam poruku da sam konektovan
Username: Ussername/ nakon ovoga dobijam poruku da upisem pass
Password: Password/ nakon ovoga dobijam poruku da sam ulogovan
sada kucam komandu: QUOTE RCMD SUPLISTCL CSTNBR('10593') / posle par trenutaka dobijam poruku da je komanda uspesno izvrsena
sada ide GET GET /FOLDER/M88888.TXT C:/PLIST88888.TXT /nakon ovoga dobijam poruku da je fajl uspesno prebacen
QUIT
Moje razmiljanje je bilo ovako: Ako to tako ide u command promptu zasto ne bih isto to mogao kroz C# kod. Lepo kreiram soket, konektujem se na FTP server sa istim ussername i pass. i onda kazem liniju po liniju:
Code:
string cmd = "QUOTE RCMD SUPLISTCL CSTNBR('10593')";
Byte[] cmdBytes = Encoding.ASCII.GetBytes((msg + "\r\n").ToCharArray());
ftpSocket.Send(cmdBytes, cmdBytes.Length, 0);
//Sada ide onaj deo gde osluskujem response i ako je ok onda ide =>
string cmd = "GET /FOLDER/M88888.TXT C:/PLIST88888.TXT ";
Byte[] cmdBytes = Encoding.ASCII.GetBytes((msg + "\r\n").ToCharArray());
ftpSocket.Send(cmdBytes, cmdBytes.Length, 0);
Medjutim, sve ide lepo do dela kada pokusam da prosledim ove komande. Koju god da probam dobijem "500 Subcommand nazivKomande not valid".