2010-09-07 56 views
7

Hi Có cách nào để kết nối với máy tính qua Modem quay số không có internet không? Giống như cửa sổ Siêu thiết bị đầu cuối. tạo kết nối gửi tệp giữa các máy tính. Chỉ cần kết nối giữa hai máy tính Trực tiếp và gửi FIle.Kết nối giữa 2 máy tính qua modem quay số mà không cần internet trong C#

+0

@shaddhin: Bạn có thể mở rộng điều này không: (1) xác nhận bạn muốn kết nối qua đường dây điện thoại, (2) loại kết nối nào bạn muốn: kết nối mạng IP hoặc thứ gì đó nguyên thủy hơn? (3) Hệ điều hành nào sẽ được sử dụng? – Richard

+0

@Richard: Chắc chắn 1) Có. 2) không có sự khác biệt chỉ là một kết nối giữa hai máy tính trên đường dây điện thoại qua modem quay số. 3) Windows xp – Shahin

Trả lời

5

Có.

Giả sử các modem được kết nối qua cổng nối tiếp (hoặc mô phỏng được kết nối qua cổng nối tiếp): bạn sẽ cần một modem thiết lập (tìm hiểu các lệnh AT!) Để nghe và trả lời cuộc gọi đến. để quay số đầu tiên.

Sau đó, bạn có thể coi cặp này là một liên kết nối tiếp khá dài.

Tuy nhiên việc làm mọi thứ trở nên đáng tin cậy là một nghệ thuật nhiều hơn khoa học, và điều hiếm khi được thực hiện ngày nay khiến phần lớn nó bị lãng quên. Lần cuối cùng tôi làm việc với modem theo cách này đã hơn mười lăm năm trước.

+0

. tôi biết đây là phương pháp cũ. nhưng tôi phải sử dụng phương pháp này. cảm ơn câu trả lời rất hữu ích của bạn. Vậy tôi có học AT Lệnh để tạo kết nối giữa hai máy tính không? là có bất kỳ mẫu tồn tại? – Shahin

+1

@shaddhin: Wikipedia trông giống như một phần giới thiệu tốt: http://en.wikipedia.org/wiki/Hayes_command_set Nên có thêm thông tin trên internet, nhưng bạn sẽ phải tìm kiếm. – Richard

+0

Vì vậy, điều này có nghĩa là bạn có thể thực sự thực hiện cuộc gọi miễn phí qua Internet bằng thẻ sim nếu bạn biết mình đang làm gì? –

1

Ai đó đã viết một triển khai XModem trong C# tại đây: http://trackday.cc/b2evo/blog2.php/2007/08/02/net-xmodem Điều này có thể giúp ích cho những gì bạn đang theo dõi.

+0

cảm ơn. sao tôi có thể gửi tập tin qua modem mà không cần internet? – Shahin

+1

Nó nên làm. Tôi không chắc liệu mã có xử lý quay số và trả lời mô hình gửi và nhận hay không - nhưng nó xử lý việc gửi và nhận các tệp trên cổng com. – JLWarlow

4

Cách chúng tôi sử dụng để làm điều đó trở lại trong những ngày cũ là với một cáp null-modem. Chúng tôi thậm chí còn từng làm trò chơi "nối mạng" theo cách đó, trở lại trong ngày.

Đây là cơ sở một cáp RS-232 có chân nhận và truyền được truyền đi. Tôi vẫn thấy một số bộ điều hợp xung quanh, vì vậy nó không phải là quá khó khăn để có được giữ một.

Nhiều năm sau, một số người đã tạo SLIP (IP đường dây nối tiếp) để cho phép một dòng nối tiếp hoạt động như một nhà cung cấp dịch vụ cho toàn bộ ngăn xếp TCP/IP. Một chút sau đó PPP đã được giới thiệu như một sự cải tiến. Tôi nghĩ rằng SLIP vẫn có sẵn cho hầu hết các nền tảng, và PPP tồn tại trên mọi nền tảng có thể làm internet dial-up. Vì vậy, nếu câu hỏi về cơ bản có xu hướng muốn kết nối hai máy tính thông qua PPP mà không cần qua máy chủ quay số của người khác (như Earthlink), thì bạn cần cài đặt máy chủ PPP trên một trong hai máy . Chúng đi kèm với hầu hết các bản phân phối Linux. Đối với Windows, bạn sẽ phải tìm kiếm. Tôi sẽ giúp, nhưng công ty chặn công ty của tôi lại quá lo lắng.

+0

Bạn sẽ sử dụng cáp null-modem để kết nối trực tiếp với các cổng nối tiếp DTE ngược trở lại (hoặc hai DCE), nhưng không sử dụng modem. – Richard

+0

@Richard, đó là quan điểm của tôi. Nếu các máy tính được đặt cùng vị trí, bạn không cần modem. Các modem được tạo ra để cho phép các đường dây điện thoại hoạt động trên một đường nối dài. –

+0

Kết nối giữa hai máy tính sử dụng modem mà không cần internet cáp điện thoại hoặc cáp RS-232?!tôi xin lỗi vì thông tin nghèo nàn của tôi về vấn đề này. – Shahin

1

Bạn có thể dễ dàng thiết lập kết nối mạng quay số trong Windows yêu cầu sử dụng modem (dưới tùy chọn thiết lập VPN nhưng bạn có thể đặt để chỉ quay số).

Vì vậy, tôi giả định rằng bạn có thể ánh xạ vị trí mạng cho nó để sử dụng bằng mã C# của bạn.

Như đã nêu, ít nhất một modem phải bật và nghe kết nối.

* chỉnh sửa *

Tôi tin rằng đoạn mã sau sẽ kích hoạt một kết nối dial-up đã được đặt trong Network Connections

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(); 

Đối với liên kết đặt tại c: \ ổ đĩa và tên "Kết nối cục bộ 2 - Lối tắt"

Sau đó, bạn có thể ping điểm đến để xem điểm đến có được kết nối hay không.

Cuối cùng, mặc dù tôi nghĩ rằng giải pháp tốt nhất của bạn có thể là sử dụng RAS.

Có một cái nhìn ở đây tại CodePlex: DotRAS

Sau đó bạn có thể sử dụng đoạn mã sau:

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. 
} 

Ví dụ này giả sử bạn đã có một mục tên là MyFriendsPC trong danh bạ điện thoại mặc định. Nếu bạn không và cần phải tạo kết nối này theo lập trình, bạn có thể sử dụng thành phần RasPhoneBook cho điều đó.

RasPhoneBook pbk = new RasPhoneBook(); 
pbk.Open(); // This will open the phone book in the All Users profile. 

RasEntry entry = new RasEntry("MyFriendsPC"); 

Nếu bạn muốn sử dụng cài đặt mặc định cho kết nối, bạn có thể sử dụng một trong các phương pháp tĩnh trên lớp RasEntry hoặc định cấu hình thủ công kết nối tại đây.

pbk.Entries.Add(entry); 

Khi mục nhập đã được thêm vào bộ sưu tập, nó sẽ ngay lập tức được thêm vào danh bạ.

+0

cảm ơn. vì vậy tôi phải tạo kết nối quay số giữa hai máy tính? đó là cách tốt hơn bởi vì tôi không liên quan đến lệnh AT. tất cả những gì bạn nói là có sẵn bằng cách sử dụng mã C#? tôi muốn và quá trình tự động. ví dụ máy tính bắt đầu quay số và máy tính 2 trả lời tự động. – Shahin

+0

Mở rộng mục nhập và hiển thị sử dụng RAS bằng cách sử dụng trình quay số codRlex DotRAS. – ChrisBD

+0

Sử dụng DotRas trong trường hợp này có thể hoạt động, tuy nhiên bạn cần một thứ có thể trả lời và định tuyến các cuộc gọi ở đầu kia. Windows RRAS trên hệ điều hành máy chủ của họ sẽ xử lý nó (tôi tin rằng, không bao giờ định cấu hình kết nối quay số trước đó) cho bạn khi đã định cấu hình. Nếu đó là tôi, tôi có lẽ sẽ nhận được một máy chủ VPN trên mạng từ xa và truy cập nó theo cách đó, cộng với nó sẽ không yêu cầu một đường dây điện thoại. –

1

Một điều không rõ ràng từ câu hỏi của bạn là bạn đang cố kết nối trực tiếp hai máy trong cùng một vị trí thực với cáp hoặc nếu bạn đang cố quay số từ một thiết bị khác qua PSTN.

Nếu chúng ở cùng một nơi, hãy loại bỏ modem khỏi phương trình. Điều này làm giảm độ phức tạp đáng kể.

Nếu chúng ở các vị trí riêng biệt (ví dụ: quay số qua kết nối quay số trung thực đến Thiên Chúa), there is some code here có thể giúp bạn. Bài viết nói về một modem Bluetooth hoặc GPRS, nhưng cốt lõi của nó là về việc gửi các lệnh AT có thể được sử dụng để nói chuyện với bất kỳ thiết bị tương thích với bộ lệnh AT nào. Nó có thể giúp bạn đi đúng hướng.

Cập nhật

Xem http://msdn2.microsoft.com/en-us/system.io.ports.serialport(VS.80).aspx

Từ một modem nên được gắn vào một cổng COM (COM1-COM12) ngay cả khi nó là một modem nội bộ, bạn sẽ có thể sử dụng SerialPort .NET framework của để mở cổng, gửi AT lệnh, v.v. Khi bạn có kết nối mở, bạn có thể sử dụng thư viện XModem để truyền tệp hoặc nối tiếp thẳng cho liên lạc thường xuyên.

Bạn có cần ngăn xếp IP không hoặc bạn có hài lòng với giao thức nối tiếp thẳng không?

+0

cảm ơn. Quay số không có cáp vật lý. tôi có nghĩa là các địa điểm riêng biệt. Kết nối giữa 2 máy điện thoại wit line và quay số modem. – Shahin

+0

Ngăn xếp IP là gì? tôi chỉ muốn kết nối đơn giản và truyền tập tin với thanh tiến trình và vv .... thnaks. – Shahin

Các vấn đề liên quan