Я делаю небольшое приложение для резервирования клиент/сервер, и я зациклился на том, как я могу отправить информацию о классах. На самом деле у меня есть 3 класса, и я отправляю информацию следующим образом:
VentanaPrincipalS::VentanaPrincipalS(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::VentanaPrincipalS)
{
//..Methods..//
connect(conexion,SIGNAL(nuevaConexion(QTcpSocket*)), this, SLOT(enviarDataCliente(QTcpSocket*)));
connect(conexion,SIGNAL(nuevaConexion(QTcpSocket*)), this, SLOT(enviarDataVuelo(QTcpSocket*)));
connect(conexion,SIGNAL(nuevaConexion(QTcpSocket*)), this, SLOT(enviarDataReservacion(QTcpSocket*)));
//..Methods..//
}
void VentanaPrincipalS::enviarDataVuelo(QTcpSocket *sock)
{
QByteArray buffer;
QDataStream out(&buffer, QIODevice::ReadWrite);
out << 1;
for(int i = 0; i < empresa.cantidadVuelos(); i++){
out << empresa.getVuelos().at(i)->getDestino() << empresa.getVuelos().at(i)->getIdVuelo() << empresa.getVuelos().at(i)->getPartida();
}
if(sock->isValid())
{
sock->write(buffer);
}
}
//2 More methods just like this, switching the out first number
to know which class is...//
На стороне клиента я получаю следующее:
in>> caracterControl;
switch(caracterControl){
case 1:{
while(!in.atEnd()){
QString destino;
QString id;
QDate fecha;
in >> destino >> id >> fecha;
qDebug()<< destino +" "+ id + " " + fecha.toString();
MVuelo vuelop(id, destino, fecha);
listaVuelos.append(id);
vuelosRecibidos.push_back(vuelop);
}
}
case 2:{
while(!in.atEnd()){
QString cedula;
QString correo;
QString nombre;
QString telf;
in >> cedula >> correo >> nombre >> telf;
MCliente cliente(nombre, cedula, telf, correo);
qDebug()<< "Cliente: " + cedula;
}
}
case 3:{
while(!in.atEnd()){
QString reserva;
QString vuelo;
in >> reserva >> vuelo;
qDebug()<< "Reserva: " + reserva;
}
}
}
1, 2 или 3 в зависимости от класса.
Проблема в том, что информация неполная и просто как сокет падает, потому что на него пишет другой метод, есть ли способ получить всю информацию по порядку или способ сказать серверу, что сокет закончил чтение?
Помогите пожалуйста мне ;(...
PD: Да, сервер и сокет успешно подключаются, Я В ЭТОМ УВЕРЕН :)
ПРИМЕЧАНИЕ. У меня есть QList с 3 клиентами (21727090, 20350202 и 123), и я получаю это через qDebug().
2
"Клиент: 21727090"
"Клиент: 20350202"
"Клиент: 123"
"Клиент:"
"Клиент:"
"Клиент:"