MA COME E' POSSIBILE?

mercoledì 17 agosto 2005 - 11.45

alessio_fi Profilo | Newbie

Salve ragazzi, sto impazzando con i socket.
Ma come è possibile che il seguente codice in C# funziona e si connette:

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(Dns.Resolve(ipAddress).AddressList[0], port);
s.Connect(ep);

mentre il codice vb:

Dim s As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim ep As IPEndPoint = New IPEndPoint(Dns.Resolve(ipAddress).AddressList(0), port)
s.Connect(ep)

NON VA? eppure i parametri sono gli stessi!
Mi sapete dare una dritta???

Grazie mille

totti240282 Profilo | Guru

che errore ti da ????

C'è solo un capitano !!!!!!

alessio_fi Profilo | Newbie

Allora, ho risolto la prima parte, adesso le due versioni sono allineate (era un problema mio di codice errato).
Ma adesso c'è un forte problema.
Questo sito ftp non risponde con i socket del Net mentre se uso un ocx (e a me questa cosa non piace) funziona alla grande.
Può essere un problema del server ftp? E se si quale?
Qualche dritta?

LudovicoVan Profilo | Junior Member

> Questo sito ftp non risponde con i socket del Net mentre
> se uso un ocx (e a me questa cosa non piace) funziona alla grande.
> Può essere un problema del server ftp? E se si quale?

Forse il problema è che il protocollo FTP è più complesso di una semplice comunicazione via TCP/IP. Fra l'altro, l'FTP usa *due* canali di comunicazione, uno per i dati e uno per il controllo...

Ciao. -LV

(Peace X Love] = [1)

alessio_fi Profilo | Newbie

si ma fammi capire: con cuteftp, per esempio, mi da lo stesso problema (almeno all'inizio), ossia che il socket non si connette con la chiamata PASV. Il cuteftp quindi rettifica la chiamata chiamando un PSW, un RET 0 e successivamente un PORT con il mio indirizzo IP (più due parametri in fondo della porta che non so come rintracci). Alla fine chiama un LIST e successivamente riesce a fare l'upload del file. Se faccio le stesse chiamate con il socket NET arrivo con successo fino al PORT (il socket lo apro tranquillamente chiamando l'ip del server remoto più la porta 21, proprio come cuteftp) ma appena provo a fare l'upload mi va o in timeout oppure mi dice che la connessione è rifiutata.
Possibile che un vecchio ocx del vb6 ed un normale clien ftp ce la facciano ed il socket NET no?
COsa mi perdo per strada?
Grazie mille.

Brainkiller Profilo | Guru

Non è un problema che un OCX vecchio funziona e .NET nuovo non funziona. Il problema come ti ha segnalato Ludovico è che il protocollo FTP è molto difficile da implementare rispetto ad altri protocolli base come HTTP o SMTP. Quindi prima passare ad un'implementazione bisognerebbe conoscere a fondo il protocollo leggendo le RFC.

Successivamente è necessario conoscere bene anche il sistema di Socket di .NET, capire la differenza fra Socket sincroni e asincroni, quando utilizzare gli uni e quando gli altri e sapere anche come funzionano i Threads, e concorrenza perchè sicuramente ne avrai bisogno.

Inoltre sono previste anche conoscenza relative alla sicurezza e ai firewall, come ben sai l'FTP può funzionare in modo attivo o passivo (dietro firewall).

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

alessio_fi Profilo | Newbie

Si Brain, lo so che è una cosa complicata, come so dei firewall etc.
Ed infatti, a fronte di tutti questi problemi purtroppo son costretto a rinunciare alla connessione ftp via socket (quando una cosa non funziona su almeno un sito non la posso considerare affidabile ed è quello che mi è successo).
Peccato, fino alla connessione funzionava tutto, ma si schianta quando chiedo o il LIST oppure il RETV, dandomi l'errore 425.
Pace, mi affido al buon vecchio Inet.
Grazie a tutti lo stesso.
Ale.

Brainkiller Profilo | Guru

Ciao Alessio,
forse non ne sei al corrente, ma nel FW 2.0 c'è un'apposita classe Ftp per fare ciò che desideri direttamente inclusa nel Framework. So che implementarlo da soli da zero da' più soddisfazione, però se intendi usare il controllo Inet unmanaged prossimamente avrai la possibilità di convertirlo usando le classi nuove managed.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

alessio_fi Profilo | Newbie

ottimo, quindi attendo la versione ufficiale della 2.0 (qui da me storgono la bocca se gli dico di installare una versione beta).
A proposito, ma si sa niente dell'uscita definitiva del 2005?

totti240282 Profilo | Guru

7 novembre 2005.

C'è solo un capitano !!!!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5