void ClientSocket::tcpReady(){
if(dataSize==0){
if(socket.bytesAvailable() < (int)sizeof(quint16)){
return;
}
stream >> dataSize;
}
if(dataSize <= socket.bytesAvailable()){
quint16 type;
qint32 frame;
qint32 x;
qint32 y;
quint16 numOfMsg;
quint16 dir;
qint32 tankId;
bool dead;
stream>> numOfMsg;
for(int i=0;i<numOfMsg;i++){
stream>> type;
switch (type){
case PLAYER:
stream >>frame >>tankId>>x >>y >>dead>>sendTime;
//if(!checkPrediction(frame,x,y,dead)){
cannonPrt->updateTank(frame,tankId,x,y,dead,sendTime);
//}
qWarning()<< "type "<< type<<"frame: "<<frame<<"x: "<< x<< "y: "<<y <<"time: " << sendTime.toString("m:s:z");
break;
case BULLET:
stream >>frame >>x >>y >>sendTime>>dir;
qWarning()<< "type "<< type<<"frame: "<<frame<<"x: "<< x<< "y: "<<y <<"time: " << sendTime.toString("m:s:z") <<"dir "<<dir;
break;
case INITIAL:
stream>>frame >>x>>y>>tankId>>sendTime;
cannonPrt->setFrame(frame);
cannonPrt->addTank(true,tankId,x,y);
mainTankId=tankId;
label->hide();
break;
case CHECK:
stream >>frame>>sendTime;
if(cannonPrt->getFrame()-frame>20 || cannonPrt->getFrame()-frame<-20){
cannonPrt->setFrame(frame);
}
break;
default:
break;
}
}//end for loop
dataSize=0;
}
}
void ClientSocket::tcpReady(){
QDataStream stream( &socket );
if(dataSize==0){
if(socket.bytesAvailable() < (int)sizeof(quint16)){
return;
}
stream >> dataSize;
}
if(dataSize <= socket.bytesAvailable()){
quint16 type;
qint32 frame;
qint32 x;
qint32 y;
QTime sendTime;
quint16 numOfMsg;
quint16 dir;
qint32 tankId;
bool dead;
stream>> numOfMsg;
for(int i=0;i<numOfMsg;i++){
stream>> type;
switch (type){
case PLAYER:
stream >>frame >>tankId>>x >>y >>dead>>sendTime;
//if(!checkPrediction(frame,x,y,dead)){
cannonPrt->updateTank(frame,tankId,x,y,dead,sendTime);
//}
qWarning()<< "type "<< type<<"frame: "<<frame<<"x: "<< x<< "y: "<<y <<"time: " << sendTime.toString("m:s:z");
break;
case BULLET:
stream >>frame >>x >>y >>sendTime>>dir;
qWarning()<< "type "<< type<<"frame: "<<frame<<"x: "<< x<< "y: "<<y <<"time: " << sendTime.toString("m:s:z") <<"dir "<<dir;
break;
case INITIAL:
stream>>frame >>x>>y>>tankId>>sendTime;
cannonPrt->setFrame(frame);
cannonPrt->addTank(true,tankId,x,y);
mainTankId=tankId;
label->hide();
break;
case CHECK:
stream >>frame>>sendTime;
if(cannonPrt->getFrame()-frame>20 || cannonPrt->getFrame()-frame<-20){
cannonPrt->setFrame(frame);
}
break;
default:
break;
}
}//end for loop
dataSize=0;
}
}
To copy to clipboard, switch view to plain text mode
this is input
void ClientThread::sendMessage(){
#ifdef _DEBUG
qWarning
("sendMessage %d\n",
QThread::currentThreadId());
#endif
numOfMsg++;
if(numOfMsg>CHECK_PERIOD){
sendCheckMessage();
numOfMsg=0;
}
QList<QByteArray> dataToSend= cannonPtr->getDataToSend();
if(!dataToSend.isEmpty()){
out << (quint16)0;//reserve for size
out << (quint16)dataToSend.count();
for(int i=0; i<dataToSend.count(); i++){
data.append(dataToSend[i]);
//out<<dataToSend[i];
}
out.device()->seek(0);
out<< (quint16)(data.size() - sizeof(quint16));
#ifdef _DEBUG
quint16 size;
quint16 num;
quint16 kind;
qint32 frame;
qint32 id;
qint32 x;
qint32 y;
bool dead;
out.device()->seek(0);
out>>size>>num>>kind>>frame>>id>>x>>y>>dead>>time;
qWarning()<<"size: "<<size<<"num: "<<num<<"frame: "<<frame;
#endif
socketPrt->write(data);
socketPrt->waitForBytesWritten();
dataToSend.clear();
}
}
void ClientThread::sendMessage(){
#ifdef _DEBUG
qWarning("sendMessage %d\n", QThread::currentThreadId());
#endif
numOfMsg++;
if(numOfMsg>CHECK_PERIOD){
sendCheckMessage();
numOfMsg=0;
}
QList<QByteArray> dataToSend= cannonPtr->getDataToSend();
if(!dataToSend.isEmpty()){
QByteArray data;
QDataStream out( &data, QIODevice::ReadWrite );
out.setVersion(QDataStream::Qt_4_4);
out << (quint16)0;//reserve for size
out << (quint16)dataToSend.count();
for(int i=0; i<dataToSend.count(); i++){
data.append(dataToSend[i]);
//out<<dataToSend[i];
}
out.device()->seek(0);
out<< (quint16)(data.size() - sizeof(quint16));
#ifdef _DEBUG
quint16 size;
quint16 num;
quint16 kind;
qint32 frame;
qint32 id;
qint32 x;
qint32 y;
bool dead;
QTime time;
out.device()->seek(0);
out>>size>>num>>kind>>frame>>id>>x>>y>>dead>>time;
qWarning()<<"size: "<<size<<"num: "<<num<<"frame: "<<frame;
#endif
socketPrt->write(data);
socketPrt->waitForBytesWritten();
dataToSend.clear();
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks