Решил вынести вопрос отдельно. Последний он у меня остался для проекта (после внедрения весь проект выложу с исходниками вместе, ясное дело).
В общем и целом, есть машина-сервер. На ней надо загрузить файл, распаковать его (это архив), проделать некоторые процедуры и отдать 10-30 компам в той же локальной сети или одним файлом (что проще, архивчиком), или набором файлов. При этом что "сервер", что "клиенты" могут быть и с Linux, и с Windows и вперемешку, что, скорее всего, и будет. После работы "клиентов" они должны вернуть файлик-ответ серверу, при этом перейти в неактивное состояние.
Приложение-сервер знает IP-адреса клиентов (это делается при настройке), клиенты не настраиваются никак, получая всё от сервера.
В данный момент всё это делается через SMB-расшары, то есть только в Windows, и вообще прототип на Delphi написан упоротым студентом 6 лет назад (то есть мной).
Я попробовал использовать LNet, но там раиуса кривизны рук хватило лишь на то, чтоб передать текстовое сообщение, и то почему-то повисло в итоге. Сейчас я сильно в замешательстве, что же разумнее делать:
1. Написать некоторую функцию, типа sendfile (filename: string; remote_ip: string) которая будет отдавать клиентам файл. Как это реализовать представляю с трудом. Плюс ко всему, в LNet это можно сделать лишь используя TCP сокет, да ещё и вручную следить за переполнением сетевого буфера (если я правильно понял разработчика LNet, он именно так и извращается). Метод GetMessage работает, а вот просто Get я так и не одолел, непонятно что делать с переменными типа aData.
2. Написать некоторый FTP-сервер, с которого клиенты будут забирать файлы самостоятельно и потом заливать туда файлы-ответы. Но как это сделать тоже малопонятно, компоненты FTP-клиент в LNet есть, а вот FTP-сервер нету.
3. Использовать сторонний FTP-сервер, наворачивая кучу костылей и извращений. Зато пример FTP-клиента есть.
4. Использовать какую-то другую сетевую компоненту, но какую и как - непонятно. И есть ли там где-то требуемый функционал.
Люди, подскажите, как быть?