2012-03-04 27 views
5

Tôi đang viết điều khiển từ xa C# cho trình phát đa phương tiện của mình. Nó chạy trên điện thoại Android của tôi.Giao tiếp TCP đơn giản với máy tính đằng sau bộ định tuyến

Tôi có một ứng dụng khách đang nghe kết nối TCP trên máy tính của tôi, một kết nối đã được thiết lập, xử lý các lệnh (Tăng âm lượng, giảm âm lượng, ...). Tôi đã thử nghiệm một phần bằng cách sử dụng telnet 127.0.0.1 trên máy tính của tôi, và nó hoạt động tuyệt vời.

Mọi thứ phức tạp hơn khi kết nối từ điện thoại của tôi, vì nó không có trên cùng một mạng (Tôi không có Wi-Fi, chỉ kết nối có dây), vì vậy tôi không chắc chắn cách tiếp tục. Về cơ bản tôi muốn kết nối với một máy tính đằng sau một bộ định tuyến.

Tôi có nên lưu trữ máy chủ TCP trên điện thoại của mình không và PC có kết nối với nó không? Lấy IRC làm ví dụ: mặc dù tôi ở phía sau một bộ định tuyến, tôi có thể kết nối với các máy chủ bên ngoài mà không cần chuyển tiếp cổng. Hoặc nếu lưu trữ máy chủ trên máy tính của tôi là tốt, làm cách nào để kết nối với máy chủ?

Tôi chưa hiểu mọi thứ về điều này, vì vậy hãy sửa lỗi nếu tôi gặp sự cố.

+0

"Tôi có ứng dụng khách đang nghe kết nối TCP" ... Tôi nghĩ bạn có nghĩa là ứng dụng _server_. Khách hàng kết nối với máy chủ, máy chủ chờ kết nối. :) –

Trả lời

5

Mọi thứ phức tạp hơn khi nói đến kết nối từ điện thoại của tôi, kể từ khi nó không phải là trên cùng một mạng (Tôi không có Wi-Fi, chỉ có dây kết nối), vì vậy tôi không chắc chắn làm thế nào để tiến hành. Về cơ bản, tôi muốn kết nối với máy tính phía sau bộ định tuyến.

Điều bạn muốn đạt được là có thể, nhưng bạn cần tìm hiểu về NAT traversal và lỗ đục lỗ.

Thông thường, các thiết bị phía sau NAT/Router có địa chỉ IP riêng chỉ hợp lệ trên mạng LAN. Các thiết bị từ xa không thể đoán được. Địa chỉ riêng này được NAT dịch sang địa chỉ IP công cộng khi thiết bị muốn giao tiếp với WAN.

Giải pháp dễ dàng là bạn có thể cung cấp địa chỉ IP công khai cho thiết bị phía sau NAT. Trong trường hợp này, các thiết bị từ xa trên WAN sẽ dễ dàng có thể tiếp cận nó, bởi vì địa chỉ của nó là công khai.

+2

Vậy làm thế nào để một địa chỉ IP công khai cho một thiết bị phía sau NAT? – Trilarion

6

Sẽ hợp lý hơn nếu giữ máy tính lưu trữ máy chủ và định cấu hình bộ định tuyến của bạn để chuyển tiếp kết nối tới PC của bạn. Bạn có hai lựa chọn:

  • Thiết lập một DMZ: tất cả các kết nối vào router sẽ được chuyển tiếp đến chỉ có một máy tính. Điều này là dễ nhất khi bạn chỉ có 1 PC trên mạng cần chấp nhận kết nối.
  • Định cấu hình port forwarding: bạn có thể hướng dẫn bộ định tuyến chuyển tiếp kết nối đến cổng X tới IP Y trên cổng Z. Bằng cách này, nhiều PC có thể liệt kê các kết nối (sử dụng các cổng khác nhau trên bộ định tuyến). Nó cũng an toàn hơn một chút.

Cách thiết lập các tùy chọn này phụ thuộc vào bộ định tuyến của bạn, nhưng hầu hết các bộ định tuyến chỉ chấp nhận kết nối trên cổng 80 và cung cấp giao diện web dễ dàng. Nếu bạn cung cấp cho thương hiệu bộ định tuyến của mình, chúng tôi có thể liên kết bạn với hướng dẫn sử dụng.

+2

Nhưng các kết nối IRC hoạt động như thế nào? Tại sao tôi không cần chuyển tiếp cổng cho IRC? (Hoặc thậm chí HTTP?) –

+0

Cảm ơn câu trả lời của bạn btw.Tôi đã thiết lập cổng chuyển tiếp và mọi thứ hoạt động chính xác; nhưng điều đó làm cho ứng dụng trở nên đơn giản. Không có cách nào để thực hiện mà không cần chuyển tiếp cổng? –

+2

Bạn không cần chuyển tiếp cổng cho IRC, vì đó là PC của bạn kết nối với IRC. Router của bạn sẽ thấy rằng PC của bạn cố gắng kết nối và sử dụng NAT (Network Address Translation) để truyền các gói trả về từ máy chủ đến máy tính của bạn. – Konerak

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