Linux: простой web сервер на asm

Спятил, да? А ещё если напишу, что планировал сделать многопоточность и нечто CGI-интерфейса? Вполне может быть, в рамках just for fun

Но остановился на том, чтоб отдавать статические страницы – время не дало допилить, да и энтузиазм уменьшился. Идея мне пришла из за курсовой работа по “Системному программированию” В СПбГУ ИТМО. Всех заставили писать резидент под DOS, на 8086 архитектуре. Не торт.

Основные фитчи, которые я успел реализовать:

  • Форк, при необходимости
  • Чтение конфига(ini-like)
  • Создание слушающего сокета, установка параметров
  • Парсер заголовков и запроса
  • Обработчик запросов статического контента(не в /cgi-bin/)
  • В некоторых местах совершенно корявую работу со стеком

Реализовано на NetwideASM, c частичным использованием функций glibc. Работать сервер будет только на 32-битном процессоре i686+, из за того, что дёргается прерывание ядра Linux – а номера функций отличаются в зависимости от процессора.

Read more

Java: Скачать страницу или файл с веба

Самый простой способ скачать страницу или картинку или ещё что-то в вашем приложении – воспользоваться вот таким классом с одним статическим методом.

/**
 * Fetch url
 * @author rux
 */

public class Fetcher {

    public static String get(String urlString) {
        StringBuilder result = new StringBuilder();
        String line;
        try {
            URL url = new URL(urlString);
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            while ((line = reader.readLine()) != null) result.append(line);
            reader.close();
        } catch (Exception e) {
            // ...
        }

        return result.toString();
    }
   
}

Read more