Làm thế nào để tạo một máy chủ HTTP trong Android? [đóng cửa]


116

Tôi muốn tạo một máy chủ HTTP đơn giản trong Android để cung cấp một số nội dung cho máy khách.

Bất kỳ lời khuyên nào về cách xây dựng máy chủ hoặc sử dụng bất kỳ thư viện hiện có nào?


nếu tất cả những gì bạn muốn là một máy chủ web, bạn có thể xem hướng dẫn này: devlper.com/2010/12/… và mẫu của nó: code.google.com/p/krvarma-android-samples/source/browse/… . cả hai đều rất cũ, nhưng sau một số chỉnh sửa, nó vẫn sẽ hoạt động tốt.
nhà phát triển android

Câu trả lời:


131

Hãy xem xét điều này: https://github.com/NanoHttpd/nanohttpd . Rất nhỏ, được viết bằng Java. Tôi đã sử dụng nó mà không có vấn đề gì.


Kinh ngạc. Có lẽ đã tiết kiệm được một tháng làm việc. Bạn có thể sử dụng nó trong một sản phẩm thương mại?
Ivan G.

Bạn nên đọc về giấy phép BSD được sửa đổi. Nếu nó cho phép sử dụng mã trong sản phẩm thương mại hay không.
damluar

2
Tôi dường như không thể hiển thị hình ảnh trong trang html của mình. Thư mục nào nên được sử dụng trong html để hình ảnh hiển thị? Cảm ơn.
Shane Oliver

đường dẫn đến hình ảnh là liên kết lại trang html. đó không phải là vấn đề của máy chủ http, mà là html xấu ..
damluar

Tôi có thể cung cấp tệp hiện đang được thêm vào homeDir không. Ví dụ: tôi đang sao chép một tệp có tên f1 trong homeDir (sử dụng javacode). Bây giờ quá trình sao chép tệp đang được tiến hành và nếu một số người gửi yêu cầu tệp f1 Máy chủ có thể xử lý yêu cầu không?
Ashwin N Bhanushali

23

NanoHttpd hoạt động giống như một sự quyến rũ trên Android - chúng tôi có mã trong quá trình sản xuất, trong tay người dùng, mã đó được xây dựng trên đó.

Giấy phép hoàn toàn cho phép sử dụng NanoHttpd cho mục đích thương mại mà không có bất kỳ tác động "lan truyền" nào.


1
Tôi có thể tìm thấy hướng dẫn / mẫu về cách sử dụng nó ở đâu? chẳng hạn để phân phát một tệp nằm trên thiết bị để người khác có thể tải xuống (hoặc phát trực tuyến từ nó)?
nhà phát triển android

9

Điều này có thể được thực hiện bằng ServerSocket , giống như trên JavaSE. Lớp học này có sẵn trên Android. android.permission.INTERNETbắt buộc.

Phần phức tạp hơn duy nhất, bạn cần một chuỗi chờ riêng trên ServerSocket, phục vụ các ổ cắm phụ đến từ acceptphương thức của nó . Bạn cũng cần dừng và tiếp tục chuỗi này nếu cần. Cách tiếp cận đơn giản nhất dường như giết chuỗi chờ bằng cách đóng ServerSocket. Nếu bạn chỉ cần một máy chủ trong khi hoạt động của bạn ở trên cùng, thì việc bắt đầu và dừng chuỗi ServerSocket có thể được ràng buộc khá thanh lịch với các phương thức vòng đời hoạt động. Ngoài ra, nếu máy chủ có nhiều người dùng, thì có thể tốt cho các yêu cầu dịch vụ trong các chuỗi được phân nhánh. Nếu chỉ có một người dùng, điều này có thể không cần thiết.

Nếu bạn cần phải nói cho người dùng trên đó IP là nghe máy chủ, sử dụng networkinterface .getNetworkInterfaces (), câu hỏi này có thể cho thêm thủ đoạn.

Cuối cùng, ở đây có thể có một máy chủ Android tối thiểu hoàn chỉnh, rất ngắn gọn, đơn giản và có thể dễ hiểu hơn các ứng dụng người dùng cuối hoàn chỉnh, được đề xuất trong các câu trả lời khác.


6

Một máy chủ khác bạn có thể thử http://tjws.sf.net , thực ra nó đã cung cấp phiên bản hỗ trợ Android.


1
Đây là chất béo theo tiêu chuẩn Android (100kb). Tốt nếu bạn muốn có một máy chủ nghiêm túc trong java thay vì chỉ phân phát tệp đơn giản hoặc giao diện cấu hình / gỡ lỗi / trạng thái từ xa vào ứng dụng của bạn.
ahcox


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.