我正在做一个小型客户端/服务器预订应用程序,我坚持如何发送课程的信息,实际上我有 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:是的,服务器和套接字连接成功,我确定 :)
注意:我有一个有 3 个客户(21727090、20350202 和 123)的 QList,并且我收到了这个低谷 qDebug()
2
“客户:21727090”
“客户:20350202”
“客户:123”
“客户:”
“客户:”
“客户:”