InputWidget::InputWidget(QWidget *parent) : QDialog(parent) { label=new QLabel(tr("优酷页面地址:")); lineEdit=new QLineEdit(); okBtn=new QPushButton("OK"); layout=new QHBoxLayout; layout->addWidget(label); layout->addWidget(lineEdit); layout->addWidget(okBtn); setLayout(layout); connect(okBtn,SIGNAL(clicked()),this,SLOT(parase())); }
int recvAndParase(int firstSize, int secondSize) { char recvBuffer[MAX_FRAME_SIZE] = {'*'}; int onceRecved = 0; int leaveParased = 0; //上次遗留了多少字节没处理 int errCode; HTTP_PARASE_PARAM httpParam; LINE_PARASE_PARAM headerParam; bool firsted = false; int readSize; initState(httpParam, headerParam); while(1) { if(firsted) readSize = secondSize; else readSize = firstSize; onceRecved = myRecv(recvBuffer+leaveParased, readSize); if(onceRecved <= 0) return onceRecved; firsted = true; errCode = parase(recvBuffer, onceRecved+leaveParased, httpParam, headerParam); if(errCode < 0) printf("我晕,解析出错了\n"); assert(errCode <= onceRecved+leaveParased); leaveParased = onceRecved+leaveParased-errCode; assert(leaveParased >= 0); memmove(recvBuffer, recvBuffer+errCode, leaveParased); } return 0; }