Truy cập localhost của PC từ thiết bị di động Android được kết nối USB


86

Tôi có một thiết bị Android (Samsung galaxy tab) được kết nối với PC của mình qua USB.

Tôi muốn sử dụng WebServices và chạy một trang web được đặt trên máy chủ xampp cục bộ của PC trên thiết bị Android của tôi.

Tôi có thể đạt được điều đó nếu tôi có cả PC và thiết bị Android, được kết nối trên cùng một mạng không dây.

Tuy nhiên, có thể truy cập trang localhost mà không cần bất kỳ kết nối không dây nào, chỉ sử dụng kết nối USB.

(Tái bút: Trường hợp tương tự này hoạt động khi tôi chạy ứng dụng trên trình giả lập và sử dụng ip 10.0.2.2 để truy cập localhost trên PC của tôi)


Vui lòng sử dụng liên kết bên dưới stackoverflow.com/questions/4779963/… Nó hoạt động với tôi.

1
Tắt tường lửa trong khi kiểm tra trang web của bạn hoặc thêm ip của bạn vào các mạng đáng tin cậy trong cài đặt tường lửa.
zeeali

xem blog này mycodingchannel.in/blog/… để biết chi tiết
kontashi35

Câu trả lời:


34

Cuối cùng tôi đã giải quyết được vấn đề này. Tôi đã sử dụng Samsung Galaxy S với Froyo. "Cổng" bên dưới chính là cổng mà bạn sử dụng cho trình mô phỏng (10.0.2.2:port). Tôi đã làm gì:

  1. trước tiên hãy kết nối thiết bị thực của bạn bằng cáp USB (đảm bảo bạn có thể tải ứng dụng lên thiết bị của mình)
  2. lấy địa chỉ IP từ thiết bị bạn kết nối, bắt đầu bằng 192.168.xx: port
  3. mở "Trung tâm Mạng và Chia sẻ"
  4. nhấp vào "Kết nối khu vực cục bộ" từ thiết bị và chọn "Chi tiết"
  5. sao chép "địa chỉ IPv4" vào ứng dụng của bạn và thay thế nó như: http://192.168.x.x:port/test.php
  6. tải ứng dụng của bạn (một lần nữa) lên thiết bị thực của bạn
  7. chuyển đến thuộc tính và bật "Chia sẻ kết nối USB"
  8. chạy ứng dụng của bạn trên thiết bị

Bây giờ nó sẽ hoạt động.


Nếu tôi làm điều này, tôi nhận được một ngoại lệ máy chủ lưu trữ không xác định.
AaronF

4
Có vẻ như câu trả lời này, trong khi nó hoạt động, giả định rằng thiết bị Android và máy tính đều được kết nối với một điểm truy cập không dây, điều này trái ngược với những gì tác giả đang cố gắng đạt được.
Jacob

2
Cần lưu ý rằng đây là giải pháp chỉ dành cho Windows.
dotnetCarpenter

2
Tôi đồng ý với @Jacob, điều này không trả lời câu hỏi. Bản thân câu hỏi nói rằng anh ta có thể kết nối qua wifi.
bradlis7

1
Điều này không trả lời câu hỏi. Đây là câu trả lời đúng: stackoverflow.com/a/53920173/2947592
wvdz

44

Google đã đăng một giải pháp cho loại vấn đề này ở đây .

Các bước:

  • Kết nối thiết bị Android và máy phát triển của bạn khi bật gỡ lỗi USB
  • Mở Chrome trong máy phát triển của bạn, mở tab mới, nhấp chuột phải vào tab trình duyệt mới, nhấp vào kiểm tra
  • Nhấp vào biểu tượng ba chấm ở phía trên bên phải Ba chấm, -> Thêm Công cụ, Thiết bị Từ xa.
  • Nhìn xuống cuối màn hình, đảm bảo rằng tên thiết bị của bạn xuất hiện trên danh sách với chấm màu Xanh lá cây.
  • Nhìn bên dưới phần cài đặt, kiểm tra dấu chuyển tiếp Cổng
  • Thêm quy tắc. Ví dụ: nếu máy chủ web python của bạn đang chạy trên máy localhost: 5000 và bạn muốn truy cập nó từ cổng thiết bị 3333, bạn nhập 3333ở phần bên trái, nhập localhost:5000và nhấp vào thêm quy tắc.
  • Thì đấy, bây giờ bạn có thể truy cập máy chủ web từ thiết bị của mình. Hãy thử mở tab trình duyệt mới và truy cập http: // localhost: 3333 từ thiết bị của bạn

Hoạt động như quảng cáo. Cũng có thể giữ các cổng trên thiết bị và máy giống nhau :). (Không chắc chắn tại sao bạn muốn sử dụng một cổng trên thiết bị)
Ralf de Kleine

Đây phải là câu trả lời được chấp nhận. Nếu bạn đang sử dụng chứng chỉ tự ký cho nhà phát triển cục bộ của mình, hãy nhớ thêm giao thức SSL trong tab Mới, ví dụ localhost: 5000 . Nó hoạt động hoàn hảo.
turrican_34

4
"Bảng điều khiển này đã không được dùng nữa để thay thế cho giao diện chrome: // register / # devices, có chức năng tương đương." Vì vậy, chỉ cần dán chrome://inspect/#deviceschrome và bỏ qua bước chuyển tiếp Cổng của câu trả lời.
craastad

Tôi chỉ dành hơn một giờ để cố gắng tìm cách làm cho các hướng dẫn này hoạt động ERR_EMPTY_RESPONSEkhi quay lại từ Chrome trên thiết bị ... cho đến khi cuối cùng tôi nhận ra rằng tôi không chạy máy chủ localhost trên máy tính để bàn của mình và không có gì để thực sự kết nối với! Doh! Khởi động máy chủ (trong trường hợp này là Apache) và mọi thứ ngay lập tức bắt đầu hoạt động. Bước đầu tiên quan trọng là đảm bảo rằng máy chủ đích của bạn đang thực sự chạy trước khi thiết lập cổng chuyển tiếp.
CubicleSoft

đây là giải pháp tốt nhất
Raul Quispe

16

Tôi đã đọc nhiều diễn đàn và thử các ứng dụng chơi nhưng không tìm thấy giải pháp cho đến bây giờ.

Kịch bản của tôi, tôi tin là tương tự như của bạn, nhưng tôi sẽ làm rõ để giúp đỡ những người khác. Tôi có một trang web được lưu trữ cục bộ và các dịch vụ web được ứng dụng Android của tôi sử dụng. Tôi cần thiết bị này hoạt động trên đường để trình diễn chỉ với máy tính xách tay và không có kết nối mạng.

Lưu ý: Sử dụng iPhone của tôi làm điểm phát sóng wifi và kết nối cả máy tính và thiết bị Android của tôi đều hoạt động, nhưng kết nối iPhone 4S chậm và thường xuyên bị ngắt.

Giải pháp của tôi như sau:

  • Rút dây mạng trên PC và tắt wifi.
  • Tắt wifi trên thiết bị Android
  • Kết nối android với máy tính qua USB
  • Bật "Chia sẻ kết nối USB" trong menu Android. (Trong mạng-> khác ...-> Chia sẻ kết nối và điểm phát sóng di động ")
  • Lấy IP của máy tính của bạn đã được gán bằng cáp tether USB. (mở dấu nhắc lệnh và nhập "ipconfig", sau đó tìm IP mà bộ điều hợp mạng USB đã gán)
  • Mở trình duyệt trên PC bằng địa chỉ IP được tìm thấy thay vì localhost để kiểm tra. I Ehttp://192.168.1.1/myWebSite
  • Mở trình duyệt trên Android và kiểm tra nó hoạt động

1
Tôi có Nexus 10 và tôi không thể làm cho nó phù hợp với mình nhưng tôi rất cần nó. Không có tùy chọn chia sẻ kết nối !?
Ludus H

Tôi cũng có một vấn đề trong moto g5s plus. Tôi phân công vẫn không được.
Jigar Fumakiya

5

Đây là một đoạn mã ứng dụng Android của tôi:

Ứng dụng này có thể giao tiếp với mô hình HTTP get-post giữa một servlet chạy trên máy chủ và thiết bị Android được cắm ở chế độ USB-Debuggable ( vì ứng dụng đang trong quá trình phát triển ).

Tôi cũng có thể chạy ứng dụng qua Wi-Fi khi máy chủ, Tomcat Apache 7, đang chạy ( khi quá trình phát triển ứng dụng hoàn tất ).

nhập mô tả hình ảnh ở đây

Để lấy địa chỉ IP của bạn

  1. Đi tới Command Prompt
  2. Kiểu ipconfig
  3. Nhấn Enter

Trong danh sách, Địa chỉ IPv4 là IP của bạn.


Điều này là không chính xác. Chế độ gỡ lỗi USB không cung cấp kết nối mạng, cũng như chuyển tiếp ADB sẽ không cho phép thiết bị kết nối với PC. Bề ngoài, bạn đang sử dụng kết nối mạng qua USB có thể được cung cấp bởi công cụ chia sẻ kết nối, không phải gỡ lỗi USB. Một tùy chọn khác là truyền ssh qua một chuyển tiếp ADB.
Chris Stratton

Ý tôi không phải là chế độ gỡ lỗi usb cung cấp kết nối mạng. Nhưng thật không may, đó là cách duy nhất để thực hiện một số lệnh nội bộ đến từ một dự án ứng dụng Android đến máy chủ web được nhúng vào Android Studio. Cảm ơn sự quan tâm của bạn, nó sẽ gây nhầm lẫn cho các nhà phát triển mới. Đã chỉnh sửa vì ứng dụng đang trong quá trình phát triển trong Android Studio.
cagcak

Vẫn không có câu trả lời ở đây cung cấp một phương pháp để đạt được kết nối theo hướng này. "Chế độ gỡ lỗi USB" không làm được điều đó, vì vậy nếu không có mô tả chính xác về cách bạn đã thực hiện, không có giải pháp nào ở đây .
Chris Stratton

4

Tôi đã làm điều này trên máy tính windows và nó hoạt động hoàn hảo!

Bật Chia sẻ kết nối USB trên điện thoại di động của bạn. Nhập ipconfig trong dấu nhắc lệnh trong máy tính của bạn và tìm ipv4 cho "kết nối khu vực cục bộ bộ điều hợp ethernet x" (chủ yếu là kết nối đầu tiên) Bây giờ, hãy vào trình duyệt di động của bạn, nhập ipv4 đó với số cổng của ứng dụng web của bạn. ví dụ: - 192.168.40.142:1342

Nó đã hoạt động với những bước đơn giản!


4

Cách dễ dàng truy cập LocalHost trong Thiết bị Android thực tế -> Kết nối máy tính của bạn với thiết bị Android qua USB

  1. Chuyển đến phần kiểm tra của Chrome, nhấp vào 'f12' hoặc Control + Shift + C

Công cụ kiểm tra Chrome

  1. Kiểm tra phần dưới cùng của công cụ kiểm tra chrome.

  2. Bây giờ đi tới cài đặt trong Tab Thiết bị Từ xa.

Tab Thiết bị Từ xa

  1. kiểm tra tùy chọn "Khám phá thiết bị USB" cũng như kiểm tra tùy chọn "Chuyển tiếp cổng".

  2. Bây giờ hãy nhấp vào Thêm quy tắc, nhập bất kỳ cổng thiết bị nào, ví dụ (4880) và trong Địa chỉ cục bộ, nhập Địa chỉ thực của máy chủ cục bộ trong trường hợp của tôi, ví dụ: (127.0.0.1:480)

  3. Sau khi Thêm Quy tắc, hãy vào studio android của bạn -> bên trong URL mã của bạn ( http://127.0.0.1:4880 ). Nhớ đổi cổng từ 480 -> 4880.

  4. Đi tới tab Thiết bị từ xa trong Chrome và nhấp vào Thiết bị được kết nối của bạn. Thêm URL mới (127.0.0.1:4880) Kiểm tra trình duyệt Chrome của thiết bị Android

Kiểm tra Trình duyệt Chrome trên thiết bị thực của bạn và bắt đầu Gỡ lỗi mã trên thiết bị Android thực tế.


1

Kiểm tra các tùy chọn loại kết nối USB. Bạn nên có một cái tên là "Internet pass through". Điều đó sẽ cho phép điện thoại của bạn sử dụng cùng một kết nối với PC.


Đó là cách duy nhất tôi biết để sử dụng kết nối của PC qua USB. Vì vậy, đối với thiết bị của bạn, tôi đoán câu trả lời là không. Trình mô phỏng hoạt động vì nó chia sẻ kết nối PC của bạn.
codemonkey,

Tôi biết các thiết bị HTC mới với Sense 3 có tùy chọn (Ex các Sensation)
codemonkey

cảm ơn rất nhiều vì sự giúp đỡ. vẫn để kiểm tra xem có tùy chọn nào hoạt động hay không.
saurabh

1

Tôi rất thích câu trả lời của John, nhưng tôi muốn cung cấp cho nó một số thay đổi đối với những người muốn kiểm tra một số cấu hình máy khách // máy chủ bằng cách chạy một ứng dụng khách TCP trên USB được kết nối Di động và một máy chủ trên PC cục bộ.

Đầu tiên, rõ ràng là 10.0.2.2 sẽ không hoạt động vì đây là một thiết bị di động phần cứng THỰC SỰ chứ không phải là một trình mô phỏng.

Vì vậy, hãy làm theo hướng dẫn của John:

  • Rút tất cả cáp mạng trên PC và tắt wifi.
  • Tắt wifi trên thiết bị Android
  • Kết nối thiết bị Android với máy tính qua USB
  • Bật "Chia sẻ kết nối USB" (USB Modem / USB Cellular Modem / USB שימוש כמודם סלולרי) trong menu android. (Trong mạng-> khác ...-> Chia sẻ kết nối và điểm phát sóng di động ")

    • Kết nối USB này sẽ hoạt động như một máy chủ DHCP cho bạn một kết nối PC, vì vậy nó sẽ gán cho PC của bạn một IP (động) chuyên dụng trong mạng USB cục bộ của nó. Bây giờ tất cả những gì bạn phải làm là cho ứng dụng khách biết IP và cổng này.
  • Lấy IP của PC của bạn (đã được chỉ định bằng cáp USB.) (Mở dấu nhắc lệnh và nhập "ipconfig", sau đó tìm IP mà bộ điều hợp mạng USB đã chỉ định, trong Linux ifconfighoặc "Thông tin kết nối" của Ubuntu, v.v. ..)

  • Yêu cầu ứng dụng kết nối với IP đó (tức là 192.168.42.87) bằng một cái gì đó như (Java - phía máy khách):

    String        serverIP      = "192.168.42.87";
    int           serverPort    = 5544;
    InetAddress   serverAddress = InetAddress.getByName(serverIP);
    Socket        socket         = new Socket(serverAddress, serverPort);
    ...
    

    Thưởng thức..


1

Xin chào, bạn có thể truy cập localhost xampp của mình bằng

  1. Bảng điều khiển ->
  2. tường lửa bảo vệ windows ->
  3. Cài đặt nâng cao (ở phía bên trái) -> Quy tắc gửi đến -> Quy tắc mới -> Cổng -> trong cổng cục bộ cụ thể ghi các cổng Apache của bạn -> tiếp theo -> tiếp theo sau đó bạn có thể truy cập máy chủ cục bộ của mình bằng cách sử dụng PC cục bộ Địa chỉ IP:

0

Kết nối điện thoại Android qua cáp USB và truy cập máy chủ http trên Máy tính.

  1. Tường lửa - tắt nó đi, khi mọi thứ hoạt động, bạn có thể thêm quy tắc trong Quy tắc gửi đến, bật Máy chủ Apache HTTP (UDP và TCP) (hoặc bất kỳ máy chủ HTTP nào bạn đang sử dụng) Cảnh báo - nếu bạn tắt tường lửa, máy tính của bạn sẽ dễ bị tấn công đối với các cuộc tấn công internet. Vì vậy, hãy tắt internet và ngắt kết nối khỏi mạng trước. Bạn không cần phải kết nối Internet để làm việc này vì bạn đang kết nối hai thiết bị trên mạng cục bộ.

  2. Cắm cáp USB. Nếu cửa sổ mạng bật lên, hãy chọn Mạng gia đình. Nếu nó không bật lên, nó có thể được đặt thành Công cộng (sẽ không hoạt động), vì vậy hãy truy cập: Control Panel \ Network and Internet \ Network and Sharing Center (trong win7) và đặt nó thành Mạng gia đình ở đó. Nó có thể cung cấp cho bạn một màn hình tiếp theo sau khi bạn nhấn vào nó để chia sẻ Hình ảnh, Nhạc ... chỉ cần nhấp vào hủy trên đó. Trên màn hình chính Mạng chính sẽ vẫn hoạt động.

  3. Bạn cần IP của máy tính, localhost hoặc các bí danh khác không hoạt động. Để lấy IP của máy, hãy khởi động trình bao dòng lệnh Windows (nhấn Windows Key + R và gõ cmd), cửa sổ nhắc lệnh màu đen sẽ bật lên, nhập: "ipconfig" và nhấn enter. Bây giờ hãy tìm kiếm

Địa chỉ IPv4. . . . . . . . . . . : 192.168. ###. ### Đó là IP mà điện thoại của bạn đã gán cho máy tính của bạn

  1. Bây giờ bạn đã hoàn tất, trong trình duyệt của điện thoại, hãy thử truy cập vào một tệp html thử nghiệm từ máy chủ của máy tính, nó sẽ hiển thị tốt.

  2. Bây giờ mọi thứ đang hoạt động có thể bạn sẽ muốn kích hoạt tường lửa và truy cập Internet trên máy tính của mình. Bây giờ hãy thử truy cập lại máy chủ http của bạn. Nó có thể sẽ không hoạt động. Tùy thuộc vào thiết lập của bạn, bạn có thể nhận được một cửa sổ bật lên yêu cầu bạn thêm quy tắc để cho phép quy tắc đó, nhưng nếu không, chỉ cần tự thêm quy tắc đó. Khởi động tường lửa của windows và đi tới Quy tắc gửi đến (vì đó là máy chủ) và thêm Quy tắc mới. Chọn "Chương trình". Xác định vị trí exe của máy chủ http của bạn và trong màn hình tiếp theo, hãy đảm bảo chọn Cho phép. Hãy thử kết nối lại và bây giờ nó sẽ hoạt động. Nếu không, có thể là do bạn đã chọn sai exe. Bạn thậm chí có thể nâng cao hơn để hạn chế việc sử dụng bên ngoài (vì giờ đây mọi người trên internet đều có thể truy cập nó nếu họ có địa chỉ IP Internet của bạn) Để hạn chế quyền truy cập, bạn có thể nhấp chuột phải vào quy tắc mới mà bạn vừa tạo,

    Lưu ý cho các nhà phát triển Android, bây giờ trong mã Android của bạn, bạn phải sử dụng "http: //", nếu không nó sẽ không hoạt động. Ví dụ: MyAsyncTask.execute ("http://192.168.123.123/test.html")

Phần II - Đặt IP thành cố định / tĩnh.

Bây giờ mọi thứ đã hoạt động, mỗi khi bạn rút cáp và cắm lại, IP của bạn sẽ thay đổi. Và nếu bạn đang sử dụng nó ở đâu đó như bên trong mã, bạn sẽ phải cập nhật nó mọi lúc! Giải pháp mà tôi đã đưa ra là đặt IP thành tĩnh.

  1. Sau khi điện thoại được kết nối và kết nối mạng, hãy quay lại Network and Sharing Center và nhấp vào kết nối Local Area "Connections:"

ảnh chụp màn hình

  1. Trên màn hình tiếp theo, chọn Thuộc tính, sau đó đánh dấu IP 4 và nhấn thuộc tính ở đó và nhấp vào "Sử dụng địa chỉ IP sau"
  2. Đặt Cổng mặc định và Mặt nạ mạng con chính xác như trong ipconfig và đối với Địa chỉ IP, chỉ thay đổi 3 chữ số cuối thành bất kỳ thứ gì từ 1 đến 255

ảnh chụp màn hình

IP đó sẽ là IP cố định / tĩnh mới của bạn và nó sẽ vẫn giữ nguyên vào lần tiếp theo bạn cắm điện thoại.


0
  1. Đảm bảo rằng bạn đã cài đặt adb trên máy tính , bật gỡ lỗi USB trên điện thoại và điện thoại đã cho phép truy cập vào máy tính. Cắm điện thoại vào máy tính qua cáp USB và đảm bảo rằng nó hiển thị (nó sẽ hiển thị trong lệnh Bash adb devices.
  2. Trong trình duyệt Chrome trên máy tính của bạn, mở chrome: // verify / # devices , nhấp vào nút "Chuyển tiếp cổng", chọn "Bật chuyển tiếp cổng" và thêm cổng trên máy tính mà bạn muốn truy cập từ điện thoại ( hướng dẫn chi tiết tại đây ). Bạn sẽ cần tiếp tục mở tab đang chạy chrome: // verify / # devices.
  3. Trong trình duyệt trên điện thoại của bạn, điều hướng đến localhost: [port_number], và nó sẽ hiển thị bất cứ thứ gì đang chạy trên máy tính.

Tính năng này hoạt động trên Windows và Ubuntu Linux và cũng sẽ hoạt động trên Mac.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.