void MyServer::slotReadClient()
{

    QTcpSocket* pClientSocket = (QTcpSocket*)sender();

    QDataStream in(pClientSocket);
    in.setVersion(QDataStream::Qt_5_3);


    for(;;){

        if(!nextBlockSize){
            if(pClientSocket->bytesAvailable() < sizeof(quint32)) {
                break;
            }

            in >> nextBlockSize;
        }

        if(pClientSocket->bytesAvailable() < nextBlockSize) {
            break;
        }


        QString request;
        in >> request;

        QStringList req_param = request.split(" ");

        if(req_param.at(0) == "GETCURRENTVERSION")
            sendCurrVers(pClientSocket);

        if(req_param.at(0) == "GETSUBJECTS")
            sendArrayToClient(pClientSocket,getSubjects());

        if(req_param.at(0) == "GETTHEMES")
            sendArrayToClient(pClientSocket,getThemes(req_param.at(1)));

        if(req_param.at(0) == "GETPICTURES")
            sendArrayToClient(pClientSocket,getPictures(req_param.at(1),req_param.at(2)));

        if(req_param.at(0) == "GETIMAGE")
            sendImageToClient(pClientSocket,getImage(req_param.at(1)));

        if(req_param.at(0) == "PUTSUBJECT"){
            putSubject(req_param.at(1));
            version++;
        }
        if(req_param.at(0) == "PUTTHEME"){
            putTheme(req_param.at(1),req_param.at(2));
            version++;
        }
        if(req_param.at(0) == "PUTIMAGE")
        {
            QImage img;

            in >> img;

            quint32 k = putImage(img,req_param.at(1),req_param.at(2), req_param.at(3));
            version++;
            QList<QString> lst;
            lst << QString("%1").arg(k);
            sendArrayToClient(pClientSocket,lst);
        }
        if(req_param.at(0) == "DELETESUBJECT"){
            deleteSubject(req_param.at(1));
            version++;
        }
        if(req_param.at(0) == "DELETETHEME"){
            deleteTheme(req_param.at(1),req_param.at(2));
            version++;
        }
        if(req_param.at(0) == "DELETEIMAGE"){
            deleteImage(req_param.at(1));
            version++;
        }
        if(req_param.at(0) == "SWAPIMAGE"){
            QImage img;

            in >> img;

            swapImage(img,req_param.at(1));
            version++;
        }
Example #2
0
int
blogeditsubject_main()
{
	struct Blog blog;
	int i;
	char *cmd;

	printXBlogHeader();
	check_msg();
	changemode(READING);
	if (!loginok || isguest) {
		printf("请先登录。");
		goto END;
	}
	if (openBlogW(&blog, currentuser->userid) < 0) {
		printf("您尚未建立 blog。");
		goto END;
	}
	printBlogHeader(&blog);
	printBlogSettingSideBox(&blog);
	printf("<div id=contents>");

	cmd = getparm("cmd");
	if (!strcmp(cmd, "modify"))
		modifySubjects(&blog);
	else if (!strcmp(cmd, "add"))
		addSubject(&blog);
	else if (!strcmp(cmd, "delete"))
		deleteSubject(&blog);

	printf("<br><b>修改现有栏目</b>:<br>"
	       "<form action=blogeditsubject method=post>"
	       "<input type=hidden name=cmd value=modify><table border=1>");
	printf
	    ("<tr><td>编号</td><td>标题</td><td>&nbsp;</td><td>文章数</td><td></td></tr>");
	for (i = 0; i < blog.nSubject; i++) {
		if (!*blog.subject[i].title && !blog.subject[i].count)
			continue;
		printf("<tr>");
		printf("<td>%d</td>", i);
		printf
		    ("<td><input name=\"title%d\" type=text value=\"%s\" /></td>",
		     i, nohtml(blog.subject[i].title));
		printf
		    ("<td><input name=\"hide%d\" type=checkbox%s> 隐藏</td>",
		     i, blog.subject[i].hide ? " checked" : "");
		printf("<td>%d 篇</td><td>&nbsp;", blog.subject[i].count);
		if (!blog.subject[i].count) {
			printf
			    ("<a href=\"blogeditsubject?cmd=delete&amp;subjectID=%d\">删除</a>",
			     i);
		}
		printf("</td></tr>");
	}
	closeBlog(&blog);

	printf("</table>");
	printf("<input type=submit value=\"修改\"></form>");

	printf("<br><br><b>添加新栏目</b>:<br>"
	       "<form action=blogeditsubject method=post>"
	       "<input type=hidden name=cmd value=add>");
	printf("标题:<input name=title><br>");
	printf("<input name=hide type=checkbox> 隐藏该栏目<br>");
	printf("<input type=submit value=\"添加\">");
	printf("</form>");
	printf("</div>");
      END:
	printXBlogEnd();
	return 0;
}