Application similar to AirDrop
The product of Hackathon at Kirovograd IT School "SH++" 04 April 2015.
Other platforms
Protocol UDP/TCP (raw in Russian)
дефолтный порт для всего 9999, UDP сигнатура DEADBABA общение по UDP структура: 4b signature, 4b crc32, x byte JSON UTF-8 для чисел юзаем network byte order пакет с типом iamalive - шлется юдп броадкастом и не требует подтверждения, все остальные - напрямую конкретному айпи и требуют подтверждения, иначе продолжают слаться структура iamalive: id: 3333, name: roman, type: iamalive общая структура пакета: { "id" : 12345, "type" : "lalala"} общая структура конфирма: { "id": 12345(тот же), "type": "confirm" } после получения конфирма пересылка мессаджа прекращается. флоу такой: Отправитель: id: 1, type: send-file, name: котики.jpg, size: 1111, file_id: 3333 (кастомный айди чтобы сохранить контекст работы с одним файлом) Получатель подтверждает получение пакета Получатель: id: 1(это ж типа ответ), type: accept/reject Отправитель подтверждает получение пакета Получатель устанавливает ТСР соединение пересылка по TCP структура колбасы: 2b size, then utf8 json of that len, then actually bytes (length is described in json) тут получатель коннектится к отправителю, Получатель просит отправителя отправить ему немного байт типа file_id: 3333, from: 0, to: 1024, crc: … по факту после такого json нет никакого байтового потока, и идет следующий отрезок длина-сообщение Отправитель же работает в том же формате: 2b, json, bytes в JSON он дублирует всё, поскольку должен быть контекст у пересылки последующих байт. (можно запрашивать параллельно несколько файлов сразу же) если у отправителя проблемы с пересылкой файла (он уже не хочет пересылать или файл удалён, то дополнительно в json есть поле errorcode: 404, errormsg: "file not found" при разрыве коннекта конечно же TCP переподключается