Мультиплексирование данных через сокет
В основном я пытаюсь сделать 2 - 3 передачи файлов из одного и того же сокета, НО все они одновременно, но при этом не прерывать сообщения, отправленные обратно и клиент / сервер.
Подобно программе чата между 2 людьми и 3 передачи файлов происходит.
Я стараюсь не открывать 2 или более потоков.
Я хочу, чтобы все происходило асинхронно - все еще говорите и передавайте все 3 файла одновременно; не один за другим.
Как будет выглядеть мой протокол? Я не могу думать об этом.
1 ответ
Если вы действительно хотите сделать коммутацию пакетов самостоятельно, я рекомендую очередь: поместите пакеты, которые должны быть отправлены, на одном конце, а на другом конце вы берете пакеты и выполняете фактический банковский перевод.
Для пакетов, которые передаются по сети, вам нужен тип (передача файла или чат), место назначения (куда поместить файл или с кем вы общаетесь) и фактические данные пакета.
На принимающей стороне вы должны отслеживать всех получателей, чат и передачи файлов. При получении передачи файла для пункта назначения X вы сохраняете его в файл X, если вы получаете сообщение чата для пользователя Y, вы отправляете сообщение пользователю Y.