Russian Qt Forum

Qt => Работа с сетью => Тема начата: demiurg от Май 04, 2011, 00:08



Название: Асинхронный однопоточный сервер и буфер данных
Отправлено: demiurg от Май 04, 2011, 00:08
Встала задача передо мной собирать данные с TCP\IP клиентов. Порядок работы следующий - клиент соединяется с сервером , происходит протокол обмена , клиент отключается.  Начал мастырить всё на АОС ,но для реализации протоколо необходим отдельный глобальный буфер  данных для каждого клиента(могут вклиниться данные другого клиента). Встал вопрос а как связать например список сокетов и список буферов?

Мастырил чтото типа
Цитировать

class My_client: public QTcpServer{
    Q_OBJECT
public:
    My_client(QObject *parent=0);
    ~My_client();
    QTcpSocket *cl_sock;
    QString buffer;

   };

Но вот тут происходит "рассинхронизация"  client->cl_sock = qobject_cast<QTcpSocket*>(sender()); Собсно сокет знаем а в буфере то может быть чего попало.

И отвлеченный вопрос ,  сколько одновременных подключений потянет такая реализация сервера? Теоретически...


Название: Re: Асинхронный однопоточный сервер и буфер данных
Отправлено: merke от Май 04, 2011, 08:08
QMap тебе в помощь, где ключем будет ссылка на сокет, а значением твой буфер


Название: Re: Асинхронный однопоточный сервер и буфер данных
Отправлено: demiurg от Май 04, 2011, 09:09
QMap тебе в помощь, где ключем будет ссылка на сокет, а значением твой буфер

 ;) ОГРОМНОЕ спасибо за подсказку , усё пашет.Я уж думал многопоточный создавать и выделять по потоку на клиента  ;D