2011-10-23 25 views
5

Tôi biết cách phát triển trong Android và sử dụng Apache HTTP lib, nhưng tôi muốn xuống thấp hơn, giữ bộ điều hợp giao diện không dây và có thể gửi & nhận gói không dây. Tôi biết nó có thể vì có các ứng dụng sniffer trong thị trường Android. Tôi đã nhìn xung quanh và googled rất nhiều, nhưng dường như không thể có được bất kỳ ý tưởng về làm thế nào để thậm chí bắt đầu. Đáng ngạc nhiên không ai dường như đã hỏi câu hỏi này trên SO trước đó.Kết nối mạng gói trong Android

Tôi cho rằng không có API Android nào cho bạn. Vui lòng đề xuất cách gửi/nhận gói trong tài liệu tham khảo android hoặc bài đăng tới bất kỳ tài nguyên nào như vậy.

Cảm ơn!

Lưu ý: Tôi biết java.net api có thể được sử dụng trong android (mặc dù trước đây tôi chưa sử dụng) nhưng điều đó không cho tôi loại truy cập tôi muốn.

+0

Mục đích thực sự ở đây là gì? – EJP

+0

Tôi muốn tạo một ứng dụng có thể kết nối với máy chủ BSNL (ISP) thông qua một điểm truy cập ở chế độ Bridge. ngoài việc này, nhiều điều thú vị khác có thể được thực hiện. – Rushil

+0

@Rushil, chế độ cầu nối phải làm gì với bất kỳ thứ gì? Thông thường khi mọi người nói về "chế độ cầu nối" trong ngữ cảnh có thiết bị KHÔNG hoạt động như một điểm truy cập, mục đích của nó là cung cấp quyền truy cập vào mạng LAN không dây qua Ethernet. Bạn đang nói về ad-hoc không dây? Nếu có, hãy xem [câu hỏi này] (http://stackoverflow.com/questions/1932150/can-android-do-peer-to-peer-ad-hoc-networking). – mpontillo

Trả lời

2

Không có cách nào để thực hiện việc này với SDK/NDK chuẩn.

Trên thiết bị được root, bạn có thể gọi vào tcpdump hoặc một ứng dụng dựa trên libpcap khác. Không có cách nào được hỗ trợ để cung cấp cho các ứng dụng Java các đặc quyền cần thiết trên thiết bị Android sản xuất. Ví dụ: this blog post mô tả cách sử dụng tcpdump để thực hiện chụp gói dữ liệu cơ bản trên Android.

+0

Cảm ơn! Đó là một khởi đầu tốt nhưng bài đăng trên blog đó nói rằng bạn sẽ phải có thiết bị Android được kết nối với máy tính. Không phải là có thể tạo ứng dụng có thể chụp và gửi gói bằng Tôi có nghĩa là, trên một điện thoại bắt nguồn ... bài đăng blog dường như không nói nhiều. – Rushil

+1

@Rushil, có một vài lý do bạn cần một máy tính kết nối. (1) để nhổ tận gốc các thiết bị, nếu nó chưa (2) để đẩy tcpdump nhị phân vào điện thoại (3) để chạy 'adb shell' để chạy tcpdump từ. Trên một điện thoại bắt nguồn từ, bạn có thể viết mã Java để gọi vào một tùy chỉnh xây dựng' libpcap' dựa trên nhị phân mà bạn sẽ phải thiết kế để có được dữ liệu trở lại GUI của bạn trong một định dạng mà bạn có thể hiển thị.Điểm là, nếu mục tiêu duy nhất của bạn là để xem các gói đi qua, tất cả các bạn phải làm là root điện thoại, cho phép gỡ lỗi, đẩy tcpdump, chạy 'adb shell' làm gốc và bắt đầu sử dụng' tcpdump'. – mpontillo

+0

@Rushil, cũng như Tôi đã đề cập, ngay cả trên một thiết bị bắt nguồn cho một đặc quyền root ứng dụng Java không được hỗ trợ. Điều duy nhất được hỗ trợ một nửa (bởi cộng đồng, xem [androidsu] (http://androidsu.com/superuser/)) là khởi chạy một nhị phân gốc tùy ý là root. Vì vậy, bạn có thể cross-biên dịch một nhị phân với một liên kết tĩnh 'libpcap' bên trong (tương tự như' tcpdump') mà bạn có thể gọi để làm công việc bạn muốn làm. Ví dụ, bạn có thể thiết kế chương trình để xuất kết quả định dạng XML trên 'stdout' và cung cấp cho nó các lệnh trên' stdin'. – mpontillo

1

Bạn đã xem NDK chưa? Có lẽ bạn có thể làm những gì bạn muốn trong C (++).

+0

Ya Tôi đã nghe về điều đó, nhưng tôi không biết chính xác cách thiết lập nó.có vẻ phức tạp :-( – Rushil

1

Hệ điều hành Android 4.0 trở lên cung cấp VpnService qua đó bạn có thể theo dõi lưu lượng mạng. Ứng dụng được cung cấp tại http://www.taosoftware.co.jp/en/android/packetcapture/ sử dụng VpnService để thu thập dữ liệu.

+0

Cảm ơn! Trên thực tế tôi cần để có thể "làm" các công cụ như vậy, không sử dụng phần mềm của bên thứ ba. Tuy nhiên tôi sẽ thử điều đó :-) – Rushil

+0

@sandy - Tôi đã xem xét VpnService nhưng không thể giám sát lưu lượng mạng. Dường như nó được sử dụng để kết nối với VPN, không hoạt động như một VPN. Bạn đã có bất kỳ may mắn làm điều này? – brianestey

+0

@brianestey -Tôi đang cố gắng nhưng vẫn không thể tìm thấy giải pháp nào. – saini