Comunicazione Tramite Modem

giovedì 10 luglio 2003 - 15.03

vpanta Profilo | Senior Member

Salve a tutti,
come posso creare una comunicazione seriale tra 2 PC utilizzando dei normali modem.
In pratica dovrei effettuare la chiamata, collegarsi in automatico è quindi poter trasmettere i dati ?
Grazie per l'aiuto

Brainkiller Profilo | Guru

Ciao,
dipende dall'esigenza che hai...
Che cosa intendi realizzare? Ci sono due tipi di problemi uno di tipo hardware (come realizzi la conessione) e uno di tipo software.

A livello hardware su un computer ci dev'essere un RAS (Remote Access Service) o comunque un modem in attesa di una chiamata.
Dall'altra parte hai un altro modem che effettua la chiamata.
Una volta connesse le due macchine avranno due IP simili e quindi da una all'altra puoi copiare dati con il comando copy classico, mappando eventuali cartelle condivise.
Per fare la chiamata automaticamente da una all'altra potrai usare il comando rasdial.exe.
Se invece vuoi direttamente dall'applicazione fare la chiamata puoi usare le TAPI API 3.0 (anche se mi pare che con .NET funzionino meglio le precedenti 2.0/2.1), trovi documentazione qui:
http://www.microsoft.com/windows2000/techinfo/howitworks/communications/telephony/iptelephony.asp

Se invece intendi usare due applicazioni che spediscono dati è sufficiente usare le classi Socket del Framework e il protocollo TCP/IP.

Ciao
David De Giacomi

vpanta Profilo | Senior Member

Grazie delle vostre risposte,
tramite le TAPI sono già riuscito ad effettuare la chiamata e risponde in automatico dall'altra parte, ma come faccio a creare un canale dati, o un Socket per la trasmissione full-duplex delle informazioni ?

Brainkiller Profilo | Guru

Ciao,
immagino che una volta connesso le tue due macchina abbiano ricevuto un IP.
Ora tramite il protocollo TCP/IP puoi farle comunicare aprendo dei sockets in .NET.
Il namespace di riferimento è System.Net.Sockets e ci sono in particolare due classi più semplici da usare che sono TcpClient e TcpListener. La seconda si mette in ascolto e la prima si collega.
Poi tu devi integrare tutto scrivendo il codice per inviare i dati.
Non è molto semplice la programmazione con i Sockets quindi bisogna conoscere prima quello che si va ad implementare poi.
Ciao

vpanta Profilo | Senior Member

grazie ancora per la tua risposta,volevo chiederti tramite le TAPI un PC effettua la chiamata all'altro PC che risponde "al telefono", ma quando parli di IP ti riferisci all'IP statico che vado ad assegnare nella connessione di rete ?
potresti spiegarmi meglio questa fase.
grazie per le tue risposte.

Brainkiller Profilo | Guru

Io pensavo tu volessi fare una specie di connession dial-up.
Immagino che si possa fare anche tramite le TAPI.
Con una connessione dial-up un modem su un server è in attesa, tu fai una chiamata con un altro PC e con un altro modem, i PC sono connessi e il server di solito assegna un indirizzo IP al client.
In questo modo le due macchine sono connesse e possono dialogare sul protocollo TCP/IP.
Diverso invece è se con le TAPI fai chiamare dal modem del server un altro telefono per esempio un cellulare oppure un telefono di rete fissa.
Esattamente tu cosa vuoi realizzare?

Brainkiller Profilo | Guru

Trinity, i tuoi messaggi sono stati spostati in un altro Thread nella stanza "App. con Visual Studio .NET" perchè erano mischiati con quelli di vpanta che chiedeva cose abbastanza diverse dalle tue.

Il nuovo thread è visibile qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=90

Ciao

vpanta Profilo | Senior Member

Ciao,
quello che voglio realizzare è la possibilità da un PC di chiamare tramite telefono un'altro PC, in un certo modo, in effetti, una connessione dial-up. Questa operazione deve avvenire in automatico in orari prestabiliti. Sai come è possibile farlo ?

Brainkiller Profilo | Guru

Allora fai così come ti ho detto in precedenza.
Usa il rasdial.exe per fare la chiamata in uno script batch. Una volta instaurata la connessione lancia il tuo programma che copia o scarica i dati dal computer a cui si è collegato semplicemente tramite i comandi copy o da .NET File.Copy.
Alla fine usa rasdial.exe /disconnect per disconnetterti.
Chiaramente come ti dicevo in precedenza sul computer su cui ti connetti deve esserci un RRAS un server di accesso remoto.

Ciao
David

vpanta Profilo | Senior Member

Grazie per la tua risposta, ma come faccio a creare un RAS ?, come si può realizzare una connessione tramite codice ?

Brainkiller Profilo | Guru

Eh eh... un server RRAS si può fare con Windows 2000 Server, con Windows 2003 con Windows XP Pro e con Windows 2000 Professional. Devi avere un modem a disposizione che metti in modalità listening, in modo che accetti le chiamate.
Da un altro computer ti connetti a quel computer tramite linea telefonica come se ti connettessi ad Internet lui acceterà la tua chiamata fornirai le credenziali per le autenticazione e sarai fisicamente connesso.
A quel punto puoi mappare cartelle condivise remote e copiare i file.
Chiaramente la velocità massima che puoi raggiungere in questo modo è 56kbit o 64kbit se usi un'ISDN.
Se vuoi sapere come si fa a mettere in piedi un mini server RAS su XP Pro puoi seguire le istruzioni riportate qui:

http://www.microsoft.com/TechNet/prodtechnol/winxppro/reskit/prcg_cnd_lmno.asp

Ciao
David

vpanta Profilo | Senior Member

Grazie per il tuo aiuto, sei stato molto gentile,
provo e ti faccio sapere.
Una cosa, invece di utilizzare rasdial esiste un modo per connettermi in automatico via codice ?

Brainkiller Profilo | Guru

Allo stesso modo esiste una API nativa di Windows chiamata RasDial qui trovi documentazione:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rras/rras/rasdial.asp

Se la vuoi usare da .NET devi usare l'interoperabilità, che non è molto semplice da usare e da gestire e bisogna avere un buon background di C/C++ e di Win32 API.
Ciao

David De Giacomi

trinity Profilo | Guru

Non c'è un modo per richiamare con qualche riga di codice la connessione di accesso remoto. Mi basta solo questo ossia da vb.net far visualizzare la connessione remota.

Brainkiller Profilo | Guru

Trinity,
ciao, ho già scritto quasi tutte. Dall'applicazione .NET puoi richiamare un batch in cui usi rasdial.exe per connetterti.
Oppure con l'interoperabilità usi la funzione RasDial().
Altri modi io non ne conosco.

Ciao
David

trinity Profilo | Guru

ok allora mi potresti far vedere qualche riga di codice per richiamre una connessione ad internet con RasDial()? tieni presente che si utilizzano modem interni o esterni analogici 56k.

ciao

Brainkiller Profilo | Guru

Eh eh io arrivo fino a qui, poi devi andare un po' avanti anche tu.
Non ho una soluzione già pronta per fare ciò che chiedi, dovrei mettermi a lavorare e costruire il programma apposta.
Come ti dicevo l'interoperabilità non è roba semplice ed è necessaria conoscenza di Win32API e di linguaggio C.
Ora hai vari spunti per proseguire, ci metti un po' di volontà e ce la farai.

Ciao
David

trinity Profilo | Guru

Ragazzi devo fare un piccolo progettino di invio e di ricezione di file txt tra modem, in vb net si può fare? E se si coem e dove posso vedere qualche esempio? Perche non so proprio da dove partire..
Ciao

Brainkiller Profilo | Guru

Trinity,
dopo un Thread di 20 risposte sull'argomento sei di nuovo qui a chiedere la stessa cosa?
Direi che forse è ora che ti metti anche un po' a studiare, se devo farti io il programma completamente non ha molto senso non credi?
Se è qualcosa che non riesci a fare o non sai dove partire scendi di livello e fai qualcosa di più semplice.
Non puoi partire da una casa partendo dal tetto. Quello che vuoi fare prevede conoscenze di base che forse non hai.
Tutti i riferimenti necessari te li ho dati, ora vai avanti tu. Se ci fosse un esempio la programmazione sarebbe solo una copia e incolla continuo.
Ciao

vpanta Profilo | Senior Member

Salve a Tutti,
Ho provato e sono riuscito a realizzare una connesione Punto-Punto tramite il RAS di Windows Xp. Quello che volevo chiedere, ma è possibile creare un sistema Multi-Punto, in modo che più client si collegano al Server ?
Ciao, a presto

Brainkiller Profilo | Guru

Per quest'operazione, che io sappia servono più modem, più linee telefoniche e un sistema che supporti più ingressi come il RAS di Windows 2000 Server o 2003.
Quello di Windows XP dev'essere sicuramente limitato non so però a quanti client.
In più per fare cose di questo tipo di solito ci sono apparati particolari e anche centraline telefoniche apposite per accettare più utenti contemporaneamente e gestirli.
Sono simili a quelle che usano gli ISP, non è che hanno un modem per ogni utente, se no chissà quanti ne avrebbero! Sono delle macchine che collegate alle linee accettano varie connessioni.
Ciao

David De Giacomi
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5