Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.myapplication;
- import android.net.DhcpInfo;
- import android.net.wifi.WifiManager;
- import android.os.Environment;
- import android.util.Log;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.net.Socket;
- import java.nio.file.Files;
- import java.util.ArrayList;
- import java.util.List;
- import static android.content.Context.WIFI_SERVICE;
- public class ClientHandlerThread extends Thread {
- private Socket s;
- public ClientHandlerThread(Socket s) {
- this.s=s;
- }
- public void run() {
- try {
- BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
- List<String> request = new ArrayList<String>();
- String tmp = "";
- while ((tmp = in.readLine()) != null) {
- if (tmp.isEmpty()) break;
- request.add(tmp);
- Log.d("SERVER REQUEST", tmp);
- }
- if (request.size() < 1) return ;
- String sdPath = Environment.getExternalStorageDirectory().getPath();
- String fileName = request.get(0).split(" ")[1];
- File file = new File(sdPath + fileName);
- if(!file.exists()){
- BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
- out.write("HTTP/1.1 404 Not Found \n");
- out.write("Content-type: text/html\n");
- out.write("\n");
- out.write("<html><h1>404 Not Found<h1><html> \n");
- out.flush();
- //out.close();
- }
- else{
- if (file.isFile()) {
- Log.d("SERVER", "File found..");
- sendFile(file, s);
- } else {
- Log.d("SERVER", "Directory found..");
- printDirectory(file,s);
- }
- }
- s.close();
- Log.d("SERVER", "Socket Closed");
- } catch (IOException e) {
- Log.d("SERVER", "Error");
- e.printStackTrace();
- }
- return ;
- }
- /* Finds out the MIME type of the requested file */
- private String getMimeType(File f) {
- String file = f.toString();
- String type = "";
- if (file.endsWith(".txt")) {
- type = "text/txt";
- } else if (file.endsWith(".html") || file.endsWith("htm")) {
- type = "text/html; Charset=UTF-8";
- } else if (file.endsWith(".jpg")) {
- type = "image/jpg";
- } else if (file.endsWith(".png")) {
- type = "image/png";
- } else if (file.endsWith(".jpeg")) {
- type = "image/jpeg";
- } else if (file.endsWith(".gif")) {
- type = "image/gif";
- } else if (file.endsWith(".pdf")) {
- type = "application/pdf";
- } else if (file.endsWith(".mp3")) {
- type = "audio/mpeg";
- } else if (file.endsWith(".class")) {
- type = "application/octet-stream";
- } else if (file.endsWith(".mp4")) {
- type = "video/mp4";
- }
- return type;
- }
- private void sendFile(File file, Socket s) {
- try (
- OutputStream send = new BufferedOutputStream(s.getOutputStream());
- InputStream fileIn = new BufferedInputStream(new FileInputStream(file))) {
- byte[] mybytearray = new byte[(int) file.length()];
- fileIn.read(mybytearray, 0, mybytearray.length);
- fileIn.close();
- String httpHeader = "";
- httpHeader += "HTTP/1.1 200 OK\n";
- httpHeader += "Content-type: " + getMimeType(file) + "; Charset=UTF-8\n";
- httpHeader += "\n";
- send.write(httpHeader.getBytes("UTF-8"));
- send.flush();
- send.write(mybytearray);
- send.flush();
- } catch (IOException e) {
- System.err.println(e.getMessage());
- }
- }
- private void printDirectory(File file,Socket s){
- try (
- OutputStream send = new BufferedOutputStream(s.getOutputStream());
- ) {
- File[] files =file.listFiles();
- Log.d("SERVER", "Files size: "+ files.length);
- String httpHeader = "";
- httpHeader += "HTTP/1.1 200 OK\n";
- httpHeader += "Content-type: text/html; Charset=UTF-8\n";
- httpHeader += "\n";
- httpHeader += "<html>\n";
- httpHeader += "<body>\n\n";
- httpHeader += "<h2>"+file.getName()+"</h2>\n";
- httpHeader += "<ul>\n";
- for (int i = 0; i < files.length; i++)
- {
- // Log.d("Files", "FileName:" + files[i].getName());
- httpHeader += "<li><a href="+files[i].getName()+">"+files[i].getName()+"</a></li>\n";
- }
- if(files.length==0){
- httpHeader += "<html><h1>Empty<h1><html> \n";
- }
- httpHeader += "</ul>\n";
- httpHeader += "</body>\n";
- httpHeader += "</html>\n";
- send.write(httpHeader.getBytes("UTF-8"));
- send.flush();
- } catch (IOException e) {
- System.err.println(e.getMessage());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement