Мультиплексирование данных через сокет

В основном я пытаюсь сделать 2 - 3 передачи файлов из одного и того же сокета, НО все они одновременно, но при этом не прерывать сообщения, отправленные обратно и клиент / сервер.

Подобно программе чата между 2 людьми и 3 передачи файлов происходит.

Я стараюсь не открывать 2 или более потоков.

Я хочу, чтобы все происходило асинхронно - все еще говорите и передавайте все 3 файла одновременно; не один за другим.

Как будет выглядеть мой протокол? Я не могу думать об этом.

1 ответ

Если вы действительно хотите сделать коммутацию пакетов самостоятельно, я рекомендую очередь: поместите пакеты, которые должны быть отправлены, на одном конце, а на другом конце вы берете пакеты и выполняете фактический банковский перевод.

Для пакетов, которые передаются по сети, вам нужен тип (передача файла или чат), место назначения (куда поместить файл или с кем вы общаетесь) и фактические данные пакета.

На принимающей стороне вы должны отслеживать всех получателей, чат и передачи файлов. При получении передачи файла для пункта назначения X вы сохраняете его в файл X, если вы получаете сообщение чата для пользователя Y, вы отправляете сообщение пользователю Y.

Другие вопросы по тегам