Ciao Esiste un modo per connettersi ai computer tramite Dial Modem senza Internet? Come terminale Windows Hyper. che effettua la connessione che invia file tra computer. Solo connessione tra due computer direttamente e invio di FIle.Connessione tra 2 computer tramite modem dial-up senza Internet in C#
risposta
Sì.
Supponendo che i modem siano collegati tramite una porta seriale (o emulino collegato tramite una porta seriale): sarà necessario un solo modem (imparare i comandi AT
!) Per ascoltare e rispondere alle chiamate in entrata e l'altro per comporre il primo.
È quindi possibile considerare la coppia come un collegamento seriale piuttosto lungo.
Tuttavia, fare in modo che tutto funzioni in modo affidabile è più un'arte che una scienza, e qualcosa che viene fatto raramente oggi è in gran parte dimenticato. L'ultima volta che ho lavorato con i modem in questo modo è stato più di quindici anni fa.
grazie. so che questo è un vecchio metodo. ma devo usare questo metodo. grazie per la tua risposta molto utile così ho imparato AT Comandi per creare una connessione tra due computer? esiste un campione? – Shahin
@shaddhin: Wikipedia sembra una buona introduzione: http://en.wikipedia.org/wiki/Hayes_command_set Ci dovrebbero essere più informazioni su internet, ma dovrai cercare. – Richard
Questo significa che puoi effettivamente effettuare chiamate gratuite su Internet con una scheda SIM se sai cosa stai facendo? –
Qualcuno ha scritto un'implementazione XModem in C# qui: http://trackday.cc/b2evo/blog2.php/2007/08/02/net-xmodem Può aiutare con quello che stai cercando.
Il modo in cui eravamo abituati a farlo nei tempi passati era con un cavo null-modem. In passato facevamo anche giochi "in rete" in quel modo.
Questo è basicamente un cavo RS-232 con i pin di ricezione e trasmissione incrociati. Vedo ancora alcuni adattatori in giro, quindi non dovrebbe essere troppo difficile per afferrarne uno.
Molto più tardi alcune persone hanno creato SLIP (IP della linea seriale) per consentire a una linea seriale di agire come un vettore per l'intero stack TCP/IP. Un po 'più tardi è stato introdotto come miglioramento PPP. Penso che SLIP sia ancora disponibile per la maggior parte delle piattaforme e che esista un PPP su ogni piattaforma che possa effettuare dial-up internet.
Quindi, se la questione si riduce sostanzialmente verso il basso a voler mettere in rete due computer tramite PPP senza passare per qualcun altro server di dial-up (come Earthlink), ciò che è necessario è quello di installare un server PPP su una delle due macchine . Vengono con la maggior parte delle distribuzioni Linux. Per Windows dovrai andare a guardare. Sarei d'aiuto, ma il mio blocker aziendale è di nuovo esagerato.
Si utilizzerà un cavo null-modem per collegarsi direttamente alle porte seriali DTE back to back (o due DCE), ma questo non sta utilizzando i modem. – Richard
@Richard, è stato il mio punto di vista. Se i computer sono co-localizzati, non hai bisogno dei modem. I modem sono stati creati per consentire alle linee telefoniche di agire su linee seriali a lunga distanza. –
La connessione tra due computer tramite modem senza internet richiede un cavo telefonico o un cavo RS-232?!mi dispiace per le mie scarse informazioni su questo argomento. – Shahin
È possibile configurare facilmente le connessioni di rete remote all'interno di Windows che richiedono l'uso di un modem (è sotto l'opzione per l'impostazione di una VPN, ma è possibile impostarlo solo per una connessione remota).
Quindi, presumo che sia possibile mappare un percorso di rete ad esso per l'utilizzo con il codice C#.
Come già affermato, almeno uno dei modem deve essere acceso e in attesa di una connessione.
* Edit *
Credo che il seguente codice attiverà una connessione dial-up che è stato inserito all'interno di connessioni di rete
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(@"c:\Local Area Connection 2 - Shortcut");
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
Per collegamento posto al c: \ e nome "Connessione alla rete locale 2 - Collegamento"
È quindi possibile eseguire il ping della destinazione per verificare se è collegata.
Ultimamente penso che la soluzione migliore potrebbe essere l'utilizzo di RAS.
Date un'occhiata qui a Codeplex: DotRAS
è possibile utilizzare il seguente codice:
RasDialer dialer = new RasDialer();
bool connected = false;
foreach (RasConnection connection in dialer.GetActiveConnections())
{
if (connection.EntryName == "MyFriendsPC")
{
connected = true;
break;
}
}
if (!connected) {
dialer.EntryName = "MyFriendsPC";
dialer.Dial();
// If you need to provide credentials, use the Dial(NetworkCredential) overload that's available.
}
Questo esempio presuppone che si dispone già di una voce denominata MyFriendsPC nella rubrica di default. Se non lo fai e devi creare questa connessione a livello di codice, puoi utilizzare il componente RasPhoneBook per quello.
RasPhoneBook pbk = new RasPhoneBook();
pbk.Open(); // This will open the phone book in the All Users profile.
RasEntry entry = new RasEntry("MyFriendsPC");
Se si preferisce utilizzare le impostazioni predefinite per la connessione è possibile utilizzare uno dei metodi statici sulla classe RASENTRY, o configurato manualmente la connessione qui.
pbk.Entries.Add(entry);
Una volta che la voce è stata aggiunta alla raccolta, verrà immediatamente aggiunta alla rubrica.
grazie. quindi devo creare una connessione dial tra due computer? è il modo migliore perché non sto coinvolgendo con i comandi AT. tutto ciò che hai detto è disponibile usando i codici C#? voglio e processo automatico. per esempio un computer una composizione di partenza e una risposta automatica del computer 2. – Shahin
Voce estesa e mostra l'utilizzo di RAS tramite dialer DotRAS codeplex. – ChrisBD
L'utilizzo di DotRas in questo scenario potrebbe funzionare, tuttavia è necessario un dispositivo in grado di rispondere e instradare le chiamate dall'altra parte. Windows RRAS sui loro sistemi operativi server lo gestiva (credo, non ha mai configurato una connessione remota prima) per te una volta configurato. Se fossi io, probabilmente prenderei un server VPN sulla rete remota e accedessi in quel modo, in più non richiederebbe una linea telefonica. –
Una cosa che non è chiara dalla domanda è se si sta tentando di collegare direttamente due macchine nella stessa posizione fisica con un cavo, o se si sta tentando di connettersi a uno dall'altro su una PSTN.
Se si trovano nello stesso posto, eliminare il modem dall'equazione. Ciò riduce significativamente la complessità.
Se si trovano in posizioni separate (ad esempio, la connessione dial-up on-line), there is some code here potrebbe essere di aiuto. L'articolo parla di un modem Bluetooth o GPRS, ma il nocciolo della questione riguarda l'invio di comandi AT che possono essere utilizzati per comunicare con qualsiasi dispositivo compatibile con il set di comandi AT. Potrebbe farti andare nella giusta direzione.
Aggiornamento
Vedi http://msdn2.microsoft.com/en-us/system.io.ports.serialport(VS.80).aspx
Da un modem deve essere collegato a una porta COM (COM1-COM12) anche se è un modem interno, si dovrebbe essere in grado di utilizzare SerialPort del framework .NET classe per aprire la porta, inviare i comandi AT, ecc. Una volta aperta una connessione, è possibile utilizzare la libreria XModem per trasferire file o una serie diretta per comunicazioni regolari.
Avete bisogno di uno stack IP o siete soddisfatti di un protocollo seriale diretto?
@shaddhin: Potresti espandere questo: (1) conferma di voler connettere su linee telefoniche, (2) che tipo di connettività vuoi: una connessione di rete IP o qualcosa di più primitivo? (3) Quali sistemi operativi saranno in uso? – Richard
@Richard: Certo 1) Sì. 2) nessuna differenza solo una connessione tra due computer su linee telefoniche tramite modem dial-up. 3) Windows xp – Shahin