Java - сеть - Передовой опыт - смешанные синхронные / асинхронные команды

Я разрабатываю небольшую программу клиент-сервер на Java.

Клиент и сервер связаны через одно TCP-соединение. Большинство частей обмена данными являются асинхронными (может произойти в любое время), но некоторые части я хочу быть синхронными (например, ACK для отправленной команды).

Я использую поток, который считывает команды из InputStream сокета и вызывает onCommand ( ) событие. Сама команда развивается с помощью Command-Design-Pattern.

Что было бы лучше всего (Java), чтобы включить ожидание ACK без пропуска других команд, которые могут появиться одновременно?

con.sendPacket(new Packet("ABC"));
// wait for ABC_ACK

edit1

Думайте об этом как о FTP-соединении, но данные и управляющие команды находятся в одном соединении. Я хочу поймать ответ на команду управления, когда поток данных в фоновом режиме работает.

edit2

Все отправляется блоками, чтобы включить несколько (разных) передач через одно и то же TCP-соединение (мультиплексирование)

Block:
1 byte - block's type
2 byte - block's payload length
n byte - block's paylod
6
задан kazu 5 June 2011 в 08:41
поделиться