2010-03-26 68 views
12

Hoạt động của tôi cần giao tiếp với máy chủ java nằm trên máy tính dev của tôi. Trên thực tế, sử dụng trình mô phỏng, tôi có thể truy cập vào socket máy chủ thông qua địa chỉ 10.0.2.2 đặc biệt. Bây giờ tôi muốn thử nghiệm ứng dụng của mình trên điện thoại được kết nối qua usb, nhưng có vẻ như tôi không thể sử dụng 10.0.2.2 để truy cập máy chủ cục bộ dev của tôi nữa. Tự nhiên sử dụng bộ định tuyến wifi và địa chỉ lan thích hợp thực hiện thủ thuật, nhưng tôi cần sử dụng kết nối usb thay thế. Bất kỳ gợi ý nào?Truy cập máy dev localhost qua usb

chỉnh sửa:
Chỉ cần thêm các kịch bản khác nhau để cho mọi người hiểu rõ hơn:

1. Kịch bản Emulator dựa trên:

  • máy chủ java tiêu chuẩn chạy trên @localhost pc của tôi: 15000
  • ứng dụng java android chạy trên trình giả lập của tôi.

Khi ứng dụng Android cần liên hệ với máy chủ, nó sử dụng 10.0.2.2:15000 như được chỉ định here. Mọi thứ đều hoạt động tốt.

2. Kịch bản wifi đúng với thiết bị kết nối vật lý:

  • tiêu chuẩn máy chủ java chạy trên pc của tôi @ 192.168.1.10: 15000.
  • ứng dụng khách java Android đang chạy trên thiết bị của tôi có địa chỉ 192.168.1.11 được chỉ định.

Khi ứng dụng Android cần liên hệ với máy chủ, nó sử dụng 192.168.1.10:15000 và mọi thứ đều hoạt động tốt.

3. kịch bản mong muốn:

  • tiêu chuẩn máy chủ java chạy trên @localhost pc của tôi: 15000.
  • ứng dụng khách Android java chạy trên thiết bị của tôi được kết nối qua cáp USB. Không có mạng nào đang hoạt động.

Khi ứng dụng Android cần liên hệ với máy chủ, nó cố gắng kết nối với 10.0.2.2:15000 nhưng thay vào đó là ngoại lệ được ném (Mạng không thể truy cập). Có vẻ như địa chỉ đặc biệt 10.0.2.2 chỉ hoạt động đối với các thể hiện giả lập.

Tôi tự hỏi nếu trong bộ adb/adt có cách truy cập địa chỉ máy tính từ thiết bị được kết nối qua cáp USB. Tôi hy vọng nó rõ ràng hơn một chút. Cảm ơn.

Trả lời

3

Có vẻ như không có cách nào để kịch bản # 3 hoạt động bình thường, bởi vì kết nối USB không phải là kết nối mạng thực và không có ip liên quan đến nó qua điện thoại.

Thực ra giải pháp của tôi là sử dụng kết nối wifi đặc biệt giữa điện thoại và máy của tôi. Kịch bản này tương tự như # 2, nhưng không có bộ định tuyến hoặc dhcp. Thật không may, Hero của tôi không thể xử lý các kết nối ad-hoc một cách tự nhiên bởi vì this issue. Vì vậy, tôi đã phải root thiết bị của tôi và thay đổi bằng tay một số script config. Tôi hy vọng các chức năng như thế này có thể có sẵn trong các phiên bản tiếp theo.

0

Bạn có thể thiết lập kết nối với điện thoại qua USB từ máy tính của bạn, nhưng bạn phải adb forward. Tuy nhiên, tôi không nghĩ rằng bạn có thể định tuyến đường khác trên USB: thiết lập kết nối từ điện thoại đến máy tính.

Bạn có thể kết nối máy tính của mình với điện thoại và kiểm tra xem IP nào có.

Trong khi suy nghĩ về nó, tôi nhận ra, sử dụng adb forward bạn phải sử dụng localhost như máy chủ của bạn, vì vậy có lẽ bạn cũng có thể làm điều này trên điện thoại của bạn: adb forward cổng mà bạn muốn sử dụng và trên điện thoại, kết nối với cổng mà trên localhost.

+0

Tôi không sử dụng bất kỳ cổng nào đang nghe trên thiết bị của mình. Máy chủ là trên máy dev của tôi để thay thế. Vì vậy, nếu IIRC, adb chuyển tiếp hoạt động theo cách ngược lại (chuyển tiếp cổng số "nghe" ổ cắm) và đây không phải là trường hợp. –

+0

Vâng, đó là những gì tôi đã nói, tôi không chắc chắn kết nối từ thiết bị của bạn với máy tính của bạn sẽ làm việc. Lấy làm tiếc. – MrSnowflake

+0

Điều này có thể hoạt động với đường hầm ngược mà điện thoại có thể liên lạc lại. Hầu hết các cài đặt ssh sẽ hỗ trợ cho hộp của chúng tôi. –

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