2012-02-14 3 views
3

Каков наилучший способ обработки данных, которые необходимо отправить на сервер? У меня есть клиент с несколькими потоками, во всех потоках есть данные, которые необходимо отправить на сервер. Но когда я запускаю сервер, есть несколько пакетов, которые отправляются одновременно. Таким образом, данные в то время неверны.Лучший способ отправить сервер данных данных

Я думал, позволяет сделать стек, который отправляет на сервер каждые x ms. Это хороший способ сделать это?

ответ

3

Вы можете использовать структуру очереди сообщений. На сервере будет только одна очередь, и каждый раз, когда сообщение приходит в очередь, оно добавляется в конец очереди, поэтому даже сообщения отправляются одновременно, они будут упорядочены. После этого процесса сообщение в очереди отбрасывает сообщения. Существует множество структур очереди сообщений с открытым исходным кодом, которые вы можете использовать, поэтому вам не нужно реализовывать их с нуля. Вам не нужно ждать x секунд, чтобы отправить данные на сервер в этой структуре. Это сделает вашу систему быстрее.

Надеется, что это помогает

2

Открыть один сокет за клиент-нить. Таким образом, сервер может отделить от того потока, из которого он поступает, и все поддерживается в порядке.

+0

У меня уже есть это, но проблема в том, что клиентский многопоточный. Поэтому он будет отправлять сразу несколько строк. – Laurence

+0

Но каждый поток отправляет только одну строку за раз, поэтому, если вы храните разъемы отдельно, тогда у вас все в порядке. Я что-то упускаю? –

+0

Извините, я неправильно прочитал ваш ответ. Вы едете. Это действительно возможно. Но не проще ли использовать 1 сокет для клиента? – Laurence

Смежные вопросы